我的新输入字段的值未保存

时间:2017-04-14 12:42:06

标签: php zend-framework3

我想将新字段'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');

    }
}

修改 塞特犬在受保护而非公开。问题已解决,我知道这是愚蠢的

0 个答案:

没有答案