Sziasztok!
Szeretnék egy egyszerűsített felületet új nézet létrehozásához ill. a meglévők módosításához. Ehhez a gyári form bizonyos részeit el szeretném rejteni. Az elrejtett elemekhez tartozó beállításokat kódból adnám meg.
Első próbálkozásom a hook_form_alter() volt. Ezzel szépen el tudtam rejteni a basic-info, block-info és page-info fieldseteket, viszont az argument és az exposed filters fieldseteket nem.
Teljesen úgy néz ki mintha az én form_alter-em hívása után kerülnének a formra. Ezért elkezdtem játszani a module-ok weight értékeivel is (system tábla), de nem változott semmi.
Közben nézelődtem a views module-ban és úgy láttam a views_edit_view() generálja a formot.
Próbaként módosítottam, kikommenteztem pár dolgot, de az Arguments fieldset-et itt sem tudtam eltüntetni, csak a nyomógombot.
Amit szeretnék azt szerintem több módon is meg lehetne oldani. Egyik mód az lenne ha saját formomra rá tudnám pakolni az add/edit views form azon részeit amelyek kellenek, aztán az erről a formról érkező adatokat kiegészíteném a saját default-jaimmal, így rendelkezésre állna az az adathalmaz amit a gyári add/edit views form gyűjt össze és ezt már a hagyományos módon tudnám tárolni, használni.
Lényegében azt szeretném tudni, hogy hogyan tudom felhasználni saját céljaimra a gyári views formot? Köszi!
Add/Edit Views form módosítása
Fórum:
módszertani probléma
A Views modul formjai a Views modulhoz tartoznak. Ha te egy saját modulhoz fel akarod használni a Views szolgáltatásait, akkor az API-n keresztül csatlakozz rá.
Ok, de erről hol olvashatok
Ok, de erről hol olvashatok bővebben? A Views API-ról csak ennyit találtam. Itt viszont nem írnak arról amire nekem szükségem lenne. Saját mezőim és szűrőim látszódnak (amelyeket a modulomban definiáltam) amikor létrehozok egy új views-t, de én szeretném módosítani a létrehozáshoz használt form-ot.
más irány
Nem lehet, hogy neked nem is a views modul formja kell?
Mivel egy views nem más, mint egy nagy asszociatív tömb, lehet importálni exportálni, Lehet neked inkább azt kéne csinálni, hogy létrehozod a saját formodat, és a view-t közvetlenül módosítod. Tehát nem kell bűvészkedned a views formjával.
A másik megoldás, pedig talán az, hogy a form-ot sminkeled, és ott nyírod ki ezeket az elemeket.
A leggagyibb, pedig az, hgoy css-ben elrejted ;))
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
Igen, pont ez lenne a
Igen, pont ez lenne a lényeg, hogy tudjam úgy módosítani a views tömböt ahogy kedvem tartja.
Azt gondoltam, hogy a legegyszerűbb a gyári formból kiindulni, de mint kiderült ebben tévedtem ;-)
A sminkelés és a css-es elrejtés nem igazán szimpatikus. Már a gyökerénél akarom a dolgokat gyökeresen módosítani :-)
Köszi!
mi a feladat?
Lényegében ugyanazt akarod, amit most egy csomó modulnál csinálnak, hogy újraírják az egészet a Views-ra építve. Nem nagyon marad a contrib modulok kódjában listázó lekérdezés, hanem telepíteni kell alá a Views-t (függőség), és a modul lényegében egy egyszerűsített felületet kínál a Views-hoz (meg a CCK-hoz). Ezt akarod te is, vagy nem jól értem?
Igen, azt hiszem ez
Igen, azt hiszem ez megoldás lenne nekem is. Ha jól sejtem ez csak a D6 és a Views 2 megjelenése után lesz elérhető.
Még egy lehetőség
A saját formodról kapott adatokat ezzel véglegesíted
http://api.drupal.org/api/function/drupal_execute/5
egy próbát megér #pre_render
Próbáld meg azt, hogy a hook_form_alter() -ben hozzáadsz egy #pre_render függvényt
http://api.drupal.org/api/function/multipage_form_example_pre_render/5
theme_views_edit_view()
Köszi! Eddig ezt még nem próbáltam. Azóta egyébként rájöttem miért nem tudtam eltünteni az arguments fieldset-et a form módosításával. Ezen ok miatt a pre-render sem működik. Azért nem, mert pár dolog csak később kerül rá, a theme_views_edit_view() meghívásakor. Ez nekem nem tűnik túl elegáns megoldásnak.
Na, de a lényeg, hogy lemásoltam a saját sminkembe a theme_views_edit_view()-t és ott már úgy módosítom ahogy akarom.
Köszönöm a tanácsokat!
pont ezért elegáns
nem gondolod? (költői)
-
clear: both;
Eddig úgy gondoltam, hogy
Eddig úgy gondoltam, hogy azért van a hook_form_alter() hogy mindenféle form-mal kapcsolatos módosítást ott el lehessen végezni és a theme fv-k pedig azért vannak, hogy ott a megjelenéssel kapcsolatos dolgokat intézze az ember. Viszont ha a theme fv-ben bővítjük a form-ot, akkor a hook_form_alter() már nem tudja ellátni a feladatát, mivel annak hívásakor még nem teljes a form, nem tudjuk a form minden elemét elérni vele. Ezért gondolom, hogy nem elegáns a megoldás. Az elegáns szerintem az lenne, ha a theme fv miután megkapja a $form-ot, az abban található elemek alapján (és csak azok alapján!) generálja a HTML kódot. Igen, tudom, hogy ez így is történik, de jelenleg pl. akkor is generálja az argument fieldsetet ha történetesen hiányzik az az elem a $form tömbből (ill. megpróbálja generálni). Nyílván a views fejlesztői nem gondolhattak arra, hogy valaki egyszer majd le akarja tiltani az egyes részeket a formról és annak ez gondot fog okozni.