Zend_form een waarde meegeven.
Wat ik eigenlijk wil weten.
kan ik een waarde meegeven aan Zend_form en die direct gebruiken?
't is voor een soort CMS. ditmaal met plaatjes.
Nu staan die plaatjes onder bepaalde projecten.
de plaatjes worden opgeslagen in /public/images/projectnaam/
en je kan een alt meegeven in de database.
database structuur is:
id : image_name : image_alt : project
-------------------------------------------
1 : kuikentje : Lief heh : dieren
Nu wil ik het mogelijk maken om een form zo op te bouwen dat als iemand de plaatjes alt wil wijzigen. hij of zij naar admin/edit/id/dieren
kan gaan en daar dan alle images van project dieren worden geshowd. (dat dus alle image_alt worden weergegeven in een aparate Zend_form_element_text )
--
Nu kan ik een dynamisch form maken. dat is het probleem niet. en ik ga erg ver van het onderwerp af.
wat ik wil is dat ik in mijn zend_form object een waarde kan gebruiken die ik in mijn Controller heb aangegeven (zoiets als _getParam, helaas is die van Zend_Controller_Action en niet van Zend_Form, en ook Zend_view objecten meegeven werkt niet.) iemand anders een idee?
Gewijzigd op 01/01/1970 01:00:00 door Thijs Damen
Ik vind het een heel wazig verhaal en ik heb geen idee wat je nu feitelijk wil, wat wellicht aan mij ligt.
Ik heb een slideshow op mijn website.
Bij het opstarten van deze slideshow prepareert hij het volgende:
De plaatjes.
Deze zoekt hij in de map: /public/images/projectnaam/
Als hij een plaatje gevonden heeft maakt hij een connectie met de database. zoekt in de tabel "images" de plaatjesnaam op. en kijkt of er een apart informatie veld is ingevuld.
Zoja, gooit hij dit samen in een array en start de slideshow.
resultaat:
Een plaatje met een ondertitel die uit de database komt.
--
Nu om dit in een CMS systeem te verwerken en te laten aanpassen heb ik er voor gekozen om het zo te doen:
Gebruiker gaat naar het menu "Plaatje wijzigen" en krijgt per project 3 opties.
Alle projecten worden uit een database gehaald en per project kan men kiezen of ze een plaatje willen toevoegen. Verwijderen of aanpassen.
Het toevoegen lukt. want ik kan zonder problemen een verborgen form veld meegeven en deze via mijn Controller in laten vullen (en dus kan ik hiervoor _getParam meegeven)
Als ik een plaatje wil wijzigen wil ik dat er voordat de form geinitialiseerd word een waarde word meegeven. welke het script duidelijk maakt om welke plaatjes het gaat. (bij welk project ze horen).
zodat ik bij het laten zien van de form voor ieder plaatje passende bij het project een naam en beschrijving heb.
In dit geval word dus mijn SQL-quory aangepast naar
$table->select()->where('project = ?', $project);
dit word dan met een foreach uitgelezen en een form uitgemaakt.
Nu gaat het om die variable $project. Hoe kan ik deze waarde meegeven aan mijn form.
het kan niet via de view. omdat zend_form hier geen toegang op heeft.
het kan niet via getParam. omdat dit onderdeel is van een ActionController en niet van Zend_Form
het lukt mij ook niet om $form = new Form('waarde'); te doen. omdat dit volgens mij niet word toegestaan door zend_form.
hoe kan dit wel.
(ik hoop dat het nu wat duidelijker is)
anyway. dit word het tijdelijk:
IageController.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
$form = new Project_Form_imageEdit;
$table = new Image;
$select = $table->select()->where('project = ?', $this->_getParam('id'));
$row = $table->fetchAll($select);
foreach ($row as $image) {
$form->addElement('text', $image->image_name, array(
'label' => $image->image_name,
'value' => $image->image_caption
));
}
$table = new Image;
$select = $table->select()->where('project = ?', $this->_getParam('id'));
$row = $table->fetchAll($select);
foreach ($row as $image) {
$form->addElement('text', $image->image_name, array(
'label' => $image->image_name,
'value' => $image->image_caption
));
}
iets in deze richting is het nu. natuurlijk zitten er ook wat decorators bij maar dit word de manier dat ik nu dus maar mijn form op ga bouwen. Can't say Im happy with it. but it works.
Decorators heb ik helaas nog geen kaas van gegeten, als ik een bijzonder formulier moet bouwen, doe ik dit helaas nog via een view-script, waardoor php-validatie een stuk omslachtiger wordt.
het hoort helemaal niet daar. ik zie alleen geen andere manier om een waarde te geven aan het form object zelf behalve dan deze manier.
Zend_Registry
//Controller
//Form
et voila. ik heb een waarde in mijn Form staan ;D
Soms zijn de dingen zo simpel;s