Zobacz pełną wersję : Joomla 3.6 Tagi
Witam,
Piszemy w pracy własny modul do Joomli i chciałbym podpiąć tam moduł tagów który jest udostępniany od jakiegoś czasu, jednak wyszedł nam bardzo duży problem.
Korzystam z dokumentacji
https://docs.joomla.org/J3.x:Using_Tags_in_an_Extension
robiąc wszystko identycznie nowe rekordy się zapisują jednak tagi już kompletnie nie. Znalazłem pomoc pod linkiem
http://stackoverflow.com/questions/23031794/joomla-3-x-tags-in-custom-component-fails
jednak wpisując w pliku Table
JTableObserverTags::createObserver($this, array('typeAlias' => 'com_s4edu.pathofcertification'));
Wyrzuca mi błąd :
BłądZapisanie nie powiodło się z powodu następującego błędu: .
i tyle, wszystko z niego wiadomo:lol:
Teraz pytanie po pierwsze jakie dane należy uzupełnić w bazie danych tzn gdy dodaje nowy rekord do tabeli content_types jak to powinno wyglądać, z grubsza po kolej.
Druga rzecz jak w ogóle sprawić żeby tagi się dodawały i potem się wyświetlały, ew. jakiś link pożyteczny.
Możliwe, że w modelu -> funkcja save() jest problem z dodaniem błędów $this->setError()
Jeśli nadal jest problem to trzeba przekazać tą drogą (wyświetlić) informacje o zmiennych przekazanych do funkcji save().
8999
wszystkie dane są prawidłowo tak naprawdę, tagi dwa dodałem i mam 2x tag id, jeśli próbuję zrobić var+dump($this->getError()); dostaję false że nie ma errorów, sorry za takie małe zdjęcie
dodam jeszcze jakie dane są dodane do tabeli content_types
type_alias
component.pathofcertification
table
{"special":{"dbtable":"#__component_path_of_certification","key":"id","type":"PathOfCertification","prefix":"JTable","config":"array()", "common":{"dbtable":"#__ucm_content","key":"ucm_id","type":"Corecontent","prefix":"JTable","config":"array()"}}
field_mappings
{"common":{"core_content_item_id":"id","core_title":"name","core_state":"state","core_alias":"alias","core_created_time":"created","core_modified_time":"modified","core_body":"introtext", "core_hits":"hits","core_publish_up":"publish_up","core_publish_down":"publish_down","core_access":"access", "core_params":"attribs", "core_featured":"featured", "core_metadata":"metadata", "core_language":"language", "core_images":"images", "core_urls":"urls", "core_version":"version", "core_ordering":"ordering", "core_metakey":"metakey", "core_metadesc":"metadesc", "core_catid":"catid", "core_xreference":"xreference", "asset_id":"asset_id"}, "special":{"fulltext":"fulltext"}}
w pliku table w konstruktorze dodałem
JTableObserverTags::createObserver($this, array('typeAlias' => 'component.pathofcertification'));
w modelu w get item dodałem
if (!empty($item->id))
{
$item->tags = new JHelperTags;
$item->tags->getTagIds($item->id, 'component.pathofcertification');
}
w widoku w pliku view niezależnie od tego czy dodam
$this->form->setValue('tags', null, $tagsHelper->getTagIds( $this->item->id, 'compoennt.pathofcertification') );
to i tak nie działa
struktura tabeli pathofcertification
CREATE TABLE #__component_path_of_certification (
id serial NOT NULL PRIMARY KEY,
product_id bigint NOT NULL UNIQUE REFERENCES #__component_product (product_id) ON DELETE CASCADE ON UPDATE CASCADE,
published SMALLINT NOT NULL DEFAULT 1,
old_price INT DEFAULT NULL,
new_price INT NOT NULL DEFAULT 0
);
piszę już jako osobna wiadomość,
dodam jeszcze że jeśli zmienie linię
JTableObserverTags::createObserver($this, array('typeAlias' => 'component.pathofcertification'));
na którąkolwiek która jest w dokumentacji w tej sekcji to dostaję komunikat że zapisano poprawnie jednak tagi się nie zapisują
Doszedłem do tego że przy samym zapisie występuję błąd konkretnie plik admin.php w linij 1179 czyli
if (!$table->store())
{
$this->setError($table->getError());
return false;
}
przy czym jeśli zrobię var_dumo table->getError() nic nie dostaję.
Trzeba drążyć dalej - czyli dostać się do funkcji store() i wydobyć zapytanie do bazy.
doszedłem już do czegoś takiego
9009
wiem że problem najprawdopodobniej leży w kolumnie field_mappings w tabeli content_types, jeszcze do końca nie rozumiem co mam tam wpisać i jak to ma wyglądać. Wydaję mi isę że to co wpisałem jest ok ale nie działa/
Mam świadomość tego że jest to Postgresowy error, ale jednak przy tworzeniu artykułów go nie ma więc musi się dać zmusić całość do działąnia
Wyciągnąłem zapytanie
INSERT INTO "ja5er_component_product" ("name", "lead", "text_section", "created", "updated", "homepage_id", "highlight_id", "highlight_image") VALUES(
'test666',
'',
'',
'2017-01-16 11:18:45',
'2017-01-16 11:18:45',NULL,NULL,''
);
zapomniałem że każda tabela jest w asocjacji z tabelą product
podmieniłem dane w tabeli content_types na
type_title -> Training
type_alias -> com_component.training
table -> {"special":{"dbtable":"#__component_product","key":"product_id","type":"Product","prefix":"ProductTable", "config":"array()"}}
rules -> ''
field->mappings -> {"common":{"core_content_item_id":"product_id","core_title":"name","core_state":"null","core_alias":"null","core_created_time":"created","core_modified_time":"updated","core_body":"text_section","core_hits":"null","core_publish_up":"null","core_publish_down":"null","core_access":"null", "core_params":"null","core_featured":"null", "core_metadata":"null", "core_language":"null", "core_images":"null", "core_urls":"null", "core_version":"null", "core_ordering":"null", "core_metakey":"null", "core_metadesc":"null", "core_catid":"null", "core_xreference":"null", "asset_id":"null"}, "special":{"parent_id":"null","lft":"null","rgt":"null","level":"null","path":"null","extension":"null","note":"null"}}
router -> ''
content_history_options -> {"formFile":"administrator\/components\/com_component\/models\/forms\/training.xml", "hideFields":[], "ignoreChanges":[], "convertToInt":[], "displayLookup":[]}
Jeśli chodzi o tamten error to raczej nie ważne chodzi o to że jak źle mapuje pole id to się wyświetla inny error.
Jeśli chodzi o strukture tabel to
TRAINING :
CREATE TABLE #__component_training (
id serial NOT NULL PRIMARY KEY,
product_id bigint NOT NULL UNIQUE REFERENCES #__component_product (product_id) ON DELETE CASCADE ON UPDATE CASCADE,
form_of_training_id bigint REFERENCES #__component_form_of_training (id) DEFAULT NULL,
trainer_id bigint REFERENCES #__component_trainer (id) DEFAULT NULL,
path_of_certification_id bigint REFERENCES #__component_path_of_certification (id) DEFAULT NULL,
published SMALLINT NOT NULL DEFAULT 1,
length INT NOT NULL DEFAULT 0,
ordering INT NOT NULL DEFAULT 0
);
PRODUCT
CREATE TABLE #__component_product (
product_id serial NOT NULL PRIMARY KEY,
name text NOT NULL DEFAULT '',
lead text NOT NULL DEFAULT '',
text_section text NOT NULL DEFAULT '',
homepage_id bigint REFERENCES #__component_homepage (id) DEFAULT NULL,
highlight_id bigint REFERENCES #__component_highlight (id) DEFAULT NULL,
highlight_image text NOT NULL DEFAULT '',
created timestamp NOT NULL DEFAULT now(),
updated timestamp NOT NULL DEFAULT now()
);
Wrzuć Twoje zapytanie INSERT INTO do phpMyAdmina.
Wrzuciłem jest w porządku.
Wydaję mi się że w rekordach które są zapisane w bazie w tabeli content_types jest coś źle ...
Coś mi się wydaje, że analiza odbiegła od tagów - to raczej kierunek zapisywania historii.
tzn możesz rozwinąć ?
Ogólnie z tego co kojarzę to w tabeli content_types kolumna field_mappings jest jakoś powiązana z tagami ?
a w ktoś ma jakiś pomysł ?
dobra rozwiązałem, brakowało po prostu kolumny alias.
vBulletin® v4.2.5, Prawa przedruku © 2024 vBulletin Solutions, Inc. Wszystkie prawa zastrzeżone.
Tłumaczenie: Polskie Centrum Joomla!