Это правда, что я видел много примеров по стеку и множество из поиска в Google, но, очевидно, никто не показал общую картину того, как вещи подпадают друг под друга, даже из самого руководства.
Я только что выбрал Zend Framework (1.10.8), и при создании форм я наконец-то обнаружил, что ViewScript на данный момент намного проще для меня, но это не так.
У меня есть module booking
, с UserController
и createAction
в нем. Под /application/modules/booking/views/scripts/user
у меня есть create.phtml
и custormerForm.phtml
.
Насколько я понимаю, в конце всего, что моя форма с ее рендерингом будет показана в моем create.phtml
, так как в моей форме будет использоваться customerForm.phtml
для ее визуального отображения и вставки в виде создания.
Итак, я пошел дальше и создал простую форму
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);
}
Теперь вот действие create в 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);
}
}
}
Теперь это create.phtml и 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>
поэтому, когда я нажимаю на мою страницу, как в http://localhost/project/booking/user/create
он просто отображает макет с содержимым представления создания без формы. Ничего в источнике страницы, без ошибок.
Правильно ли я понял, как это использовать, или я просто делаю что-то не так в коде? И, поскольку я использую Zend Framework 1.10.8, похоже, нет никакого учебника, охватывающего все это на ViewScript. декоратор.
Может кто-нибудь помочь мне и поделиться своим ценным опытом здесь? Большое спасибо за чтение этого. Может быть, я сделаю этот урок, кто знает: D