我想将新字段'pokemon'(文本字段)添加到我的实体'user' 为此,我在课堂上添加了属性而没有问题(并使用getter / setter)
/** @ORM\Column(type="string") */
protected $firstname;
/** @ORM\Column(type="string") */
protected $lastname;
/** @ORM\Column(type="string") */
protected $pokemon;
然后,对于用户添加表单,我添加了口袋妖怪部分:
class ParticipantForm extends Form
{
public function __construct($name = null)
{
parent::__construct('user');
$this->setAttribute('class', 'form-horizontal');
$this->add([
'name' => 'id',
'type' => 'Hidden',
]);
$this->add([
'name' => 'firstname',
'type' => 'Text',
'options' => [
'label' => 'First name',
],
]);
$this->add([
'name' => 'lastname',
'type' => 'Text',
'options' => [
'label' => 'Last name',
],
]);
$this->add([
'name' => 'pokemon',
'type' => 'Text',
'options' => [
'label' => 'pokemon',
],
]);
然后在我的form.pthml中,我添加了这段代码:
<div class="form-group">
<label class="col-sm-2 control-label"><?=$this->formLabel($form->get('firstname'))?></label>
<div class="col-sm-10">
<?=$this->formElement($form->get('firstname'))?>
<?=$this->formElementErrors($form->get('firstname'))?>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"><?=$this->formLabel($form->get('lastname'))?></label>
<div class="col-sm-10">
<?=$this->formElement($form->get('lastname'))?>
<?=$this->formElementErrors($form->get('lastname'))?>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"><?=$this->formLabel($form->get('pokemon'))?></label>
<div class="col-sm-10">
<?=$this->formElement($form->get('pokemon'))?>
<?=$this->formElementErrors($form->get('pokemon'))?>
</div>
</div>
在我的控制器中,我没有修改任何内容,我可以修改我的表单的任何其他值而没有任何问题。 当然,我运行了更新--force来更新我的数据库
我不知道(或看到)我的错误在哪里,如果有人有想法进一步引导我的调查。我没有任何想法
**编辑** 这里是保存我的数据的UserController代码:
public function userFormAction()
{
/** @var \Zend\Form\Form $form */
$form = $this->formElementManager->get('user_form');
$id = (int) $this->params()->fromRoute('id', 0);
/** @var \Application\Entity\User $user */
if (0 !== $id) {
try {
$user = $this->entityManager->getRepository('Application\Entity\User')->find($id);
$form->bind($user);
} catch (\Exception $e) {
return $this->redirect()->toRoute('user/list');
}
}
/** @var Request $request */
$request = $this->getRequest();
if (!$request->isPost()) {
return ['form' => $form];
}
$form->setData($request->getPost());
if (!$form->isValid()) {
return ['form' => $form];
}else{
$user = $form->getData();
$this->entityManager->persist($user);
$this->entityManager->flush();
return $this->redirect()->toRoute('user/list');
}
}
修改 塞特犬在受保护而非公开。问题已解决,我知道这是愚蠢的