我正在尝试创建一个用于编辑的表单。 С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();
答案 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 */
}