Il est vrai que j'ai vu beaucoup d'exemples sur stackoverflow et beaucoup de recherches sur Google mais apparemment personne n'a montré la grande image de la façon dont les choses se rencontrent les unes les autres, même à partir du manuel lui-même.Zend ViewScript Decorator la grande image, utilisation globale.how to?
Je viens de choisir Zend Framework (1.10.8) et lors de la création de formulaires j'ai finalement trouvé que le ViewScript pour l'instant est beaucoup plus facile à configurer pour moi mais ce n'était pas le cas.
j'ai un module booking
, avec UserController
et createAction
dans it.Under /application/modules/booking/views/scripts/user
je create.phtml
et custormerForm.phtml
. D'après ma compréhension, à la fin de tout mon formulaire avec son rendu sera montré dans mon create.phtml
comme dans mon formulaire utilisera le customerForm.phtml
pour son visuel et injecté dans la vue de création.
Alors je suis allé de l'avant et a créé une forme simple
function init(){
$this->setMethod("post");
$name = New Zend_Form_Element_Text("name");
$name->setLabel("Name: ")
->setOptions(array("size"=>"35"))
->setRequired(true)
->addValidator("NotEmpty", true);
$surname = New Zend_Form_Element_Text("surname");
$surname->setLabel("Surname: ")
->setOptions(array("size"=>"35"))
->setRequired(true)
->addValidator("Alpha", true);
$this->addElement($name)
->addElement($surname)
->addElement($submit);
}
Maintenant, voici le CréeAction dans UserController
public function createAction(){
$this->view->show = "Please Enter your Details";
$form = new Hotel_Form_Entity();
$form->setAction("/booking/user/create");
//and here set the for to be displayed at described in customerForm view
$form->setDecorators(array(array('ViewScript',array('viewScript'=>'customerForm.phtml'))));
//so here i set the form to form variable accessible in create view
$this->view->form = $form;
if($this->getRequest()->isPost()){
if($form->isValid($this->getRequest()->getPost())){
$values = $form->getValues();
$this->_helper->flashMessenger("Thank you.Form processed");
$this->_forward("success","user","booking",$values);
}
}
}
Maintenant, ce sont les create.phtml et customerForm.phtml
<!-- create.phtml -->
<h4><?php echo $this->show; ?></h4><br/><!-- -->
<p><?php echo $this->form; ?></p><br/>
<!-- customerForm.phtml -->
<div style="padding: 10 0 0 15; border: solid 1.5px #999">
<form action="<?php echo $this->element->getAction(); ?>" method="<?php echo $this->element->getMethod(); ?>">
<table>
<tr>
<td><?php echo $this->element->name; ?></td>
<td></td>
</tr>
<tr>
<td></td>
<td><?php echo $this->element->surname; ?></td>
</tr>
<tr>
<td colspan="2"><?php echo $this->element->submit; ?> </td>
</tr>
</table>
</form>
</div>
donc quand je frappe ma page comme dans http://localhost/project/booking/user/create il affiche simplement la mise en page avec le contenu de la vue de création sans formulaire. Rien dans la source de la page, pas d'erreurs. Est-ce que je me suis trompé sur la façon de l'utiliser ou que je fais juste quelque chose de mal dans le code? Et comme j'utilise Zend framework 1.10.8 il ne semble pas y avoir de tutoriel couvrant tout ça Décorateur ViewScript.
Quelqu'un peut-il me donner un coup de main et partager sa précieuse expérience ici? Merci beaucoup d'avoir lu ceci. Peut-être que je vais faire ce tutoriel qui sait: D
premier conseil sur le décorateur lorsque vous apprenez le décorateur est l'utilisation $ this-> form-> clearDecorators(); pour commencer avec aucun décorateur et de voir comment vos formulaires résultant – tawfekov
je l'ai fait et toujours vérifier la source de la page.Je viens d'avoir besoin d'un simple décorateur de scripts fonctionne pour commencer la personnalisation et obtenir pleinement la compréhension globale.Je suis malheureusement pas trop de temps pour vraiment jouer avec elle. Merci pour votre conseil si. –