Zend_form een waarde meegeven.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Thijs Damen

Thijs Damen

26/11/2008 22:37:00
Quote Anchor link
Nee, niet een hidden object:) dat is geen probleem. maar mijn form moet dynamisch zijn:s Ja I know :P

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
 
PHP hulp

PHP hulp

24/11/2024 00:55:24
 
Storeman storeman

storeman storeman

27/11/2008 09:06:00
Quote Anchor link
Ik vind het een heel wazig verhaal en ik heb geen idee wat je nu feitelijk wil, wat wellicht aan mij ligt.
 
Thijs Damen

Thijs Damen

27/11/2008 09:15:00
Quote Anchor link
Dat dacht ik al. nog maar een keer dan.

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)
 
Thijs Damen

Thijs Damen

27/11/2008 09:50:00
Quote Anchor link
De oplossing die ik ga gebruiken, want die is er wel. is absoluut niet netjes. dus als iemand nog een optie voor mij heeft :)

anyway. dit word het tijdelijk:

IageController.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
  ));
}


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.
 
Storeman storeman

storeman storeman

27/11/2008 19:06:00
Quote Anchor link
Opzich lijkt me dat niet zo'n verkeerde oplossing. Alhoewel het natuurlijk niet in je controller thuishoort maar in je form-object. Er is mijn inziens ook niet echt een andere manier om dit soort zaken aan te pakken, ergens is zo'n loopje nu eenmaal noodzakelijk.

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.
 
Thijs Damen

Thijs Damen

27/11/2008 21:19:00
Quote Anchor link
mja,

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.
 
Thijs Damen

Thijs Damen

28/11/2008 11:37:00
Quote Anchor link
Natuurlijk zie ik weer iets over het hoofd:)

Zend_Registry

//Controller
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Bootstrap::$registry->action = $this->_getParam('id');



//Form
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$action = Bootstrap::$registry->action;


et voila. ik heb een waarde in mijn Form staan ;D

Soms zijn de dingen zo simpel;s
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.