表单不会绑定所有数据



>UPDATE

当我使用:

public function setUrl_key($value) { $this->url_key = $value; }
public function getUrl_key() { return $this->url_key; }

而不是:

public function setUrlKey($value) { $this->url_key = $value; }
public function getUrlKey() { return $this->url_key; }

工作正常。为什么?


将 ZF2 与原则 2 结合使用。在我的表单的编辑操作中,只有titleemail字段显示在文本框中。其他文本框为空,就好像数据库中没有值一样。但是有。

但是,如果我像下面这样url_key放入email二传手/吸气器中,它会起作用。

public function setEmail($value) { $this->url_key = $value; }
public function getEmail() { return $this->url_key; }

通过电子邮件获取器工作...我想我的绑定或教义 2 水合作用有问题吗?


这是我的一些代码:

控制器

$link = $this->getObjectManager()->getRepository('SchemaEntityLink')->find($this->params('id'));
$form = new AdminLinkForm($this->getObjectManager());
$form->setHydrator(new DoctrineEntity($this->getObjectManager(),'SchemaEntityLink'));
$form->bind($link);
$request = $this->getRequest();
if ($request->isPost()) {

实体(setters & getters)

.....
/** @ORMColumn(type="string", name="title", length=255, nullable=false) */
protected $title;
/** @ORMColumn(type="string", length=255, nullable=false) */
protected $short_description;
/** @ORMColumn(type="string", length=255, nullable=true) */
protected $image;
/** @ORMColumn(type="text", nullable=true) */
protected $sample_title;
/** @ORMColumn(type="text", nullable=true) */
protected $sample_description;
/** @ORMColumn(type="text", nullable=true) */
protected $sample_keys;
/** @ORMColumn(type="string", name="webpage_url", length=255, nullable=false) */
protected $webpage_url;
/** @ORMColumn(type="string", length=255, nullable=true) */
protected $email;
......
public function setId($value) { $this->link_id = (int)$value; }
public function getId() { return $this->link_id; }
public function setTitle($value) { $this->title = $value; }
public function getTitle() { return $this->title; }
public function setShortDesc($value) { $this->short_description = $value; }
public function getShortDesc() { return $this->short_description; }
public function setUrlKey($value) { $this->url_key = $value; }
public function getUrlKey() { return $this->url_key; }
public function setEmail($value) { $this->email = $value; }
public function getEmail() { return $this->email; }

正如您在更新中指出的那样,这是您的实体字段/资源库不匹配。 教义找到protected $short_description;并试图找到相应的getter/setter,但setShortDesc()不匹配。

您应该使用类似protected $shortDesc; getShortDesc(); setShortDesc();的东西,因为 doctrine 读取实体字段,然后尝试查找与之前相同名称和前缀方法匹配的 getter/setter。当getShortDesc()仅通过 getter 中的代码链接时,无法将与short_description匹配。

在 ZF2 中,建议您使用 camelCase,因此即使在实体中,去除下划线似乎也是一种很好的做法。否则getter会显得不合适,在同一代码中混合两种样式是不好的。

如果你在表格中想要或需要使用下划线,你可以像这样告诉教义:

/** @Column(name="field_name") */

private $fieldName;

相关内容

  • 没有找到相关文章

最新更新