Zend Framework 2,表单

时间:2016-06-07 10:35:46

标签: php forms zend-framework

我正在尝试创建一个用于编辑的表单。 Сontroller:

$someValue = $this->someMapper->someMethod()
(someMethod returns Hydrator object)

$form->bind($someValue);

但它不起作用。值不会添加到表单。 如果我添加到Controller:

$form->setData($this->someMapper->extract($someValue);

这就是通常添加的形式。我不明白这是什么问题。

保湿对象:

  

对象(Admin \ Entity \ Article)#331(13){[“id”:protected] =>串(2)   “16”[“heading”:protected] => string(85)“fsdgsdgsdgsdg”   [ “副标题”:保护] => string(3)“fdddgdgdg”   [ “imgDescription”:保护] => string(4)“jghj”[“text”:protected] =>   string(15)“ghjghj

     

“[”category“:protected] => string(4)”category“   [ “commentation”:保护] => string(1)“0”[“important”:protected] =>   string(1)“0”[“path”:protected] => string(48)“fgdfgdgdg-fgdfhwt-gf”   [ “评论”:保护] => NULL [“views”:protected] =>空值   [ “日期”:保护] => string(19)“2016-06-06 11:23:05”   [ “IMG”:保护] => string(11)“1492546.jpg”}

View.phtml

<?php
 $form = $this->form;

 $form->prepare();

 $form->get('submit')->setValue('Update Post');

 echo $this->form()->openTag($form);

 echo $this->formCollection($form);

 echo $this->form()->closeTag();

1 个答案:

答案 0 :(得分:0)

您需要使用以下属性创建对象Entity

<?php
class Article
{
    private $id; /* $_POST['id] */
    private $headline; /* $_POST['headline']*/
    private $author; /* $_POST['author']*/
    private $comments; /* $_POST['comments']*/
}

此对象中的属性必须与POST变量相等。你可以将这个实体绑定到一个表格并设置一个保湿器。

或者您可以使用对象ArrayObject代替Entity

$request = $this->getRequest(); /* An request object in Controller */

$form->bind(new Article()); /* bind entity */
// $form->bind(new ArrayObject()); /* or bind ArrayObject */
$form->setHydrator(new ObjectProperty()); /* Add a data to properties of an Entity */
$form->setData($request->getPost()); /* Set a POST data to form */

验证后,您可以使用表单中的有效数据获取Entity

if ($form->isValid()) {
    $entity = $form->getObject(); /* Entity or ArrayObject */
}