0

以下はフォームの私のコードです

class PracticeType extends AbstractType {
    /**
     * Returns the name of this type.
     *
     * @return string The name of this type
     */
    function getName()
    {
        return "practice";
    }

    public function getDefaultOptions(array $options)
    {
        return array(
            'data_class' => 'Shwetanka\SampleBundle\Entity\Practice',
            'csrf_protection' => true,
            'csrf_field_name' => '_token',
            'intention' => 'practice_item'
        );
    }

    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder->add('name', 'text', array(
            'required' => true,
            'label' => 'Clinic Name'
        ));
    }
}

私のエンティティ

/**
 * Shwetanka\SampleBundle\Entity\Practice
 *
 * @ORM\Table(name="practice")
 * @ORM\Entity
 */
class Practice
{
    /**
     * @var integer $id
     *
     * @ORM\Column(name="practiceId", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string $name
     *
     * @ORM\Column(name="name", type="string", length=255)
     * @Assert\NotBlank()
     */
    private $name;
    //getters and setters
}

私のコントローラー -

...
$form = $this->createForm(new PracticeType());
if($request->getMethod() == 'POST'){
    $form->bindRequest($request);
    if($form->isValid()){
        $practice = EntityHelper::preparePracticeForSave($form);
        return array('hello' => 'world');
    }else {
        $view = View::create();
        $view->setTemplate('ShwetankaSampleBundle:Practice:new_practice.html.twig');
        $view->setFormat('html');
        $view->setData(array('form' => $form->createView(), 'logout' => true));
        return $this->get('fos_rest.view_handler')->handle($view);
    }
}
...

フォームを送信すると検証エラー($form.isValid() is false)が発生しますが、チェックする$form['name']とフォームに入力した値が取得されます。検証が失敗する理由を理解できません。助けが必要。

4

2 に答える 2

0

csrf フォーム タグのレンダリングを忘れていませんか? これに使用できますform_rest(form)

于 2012-07-21T15:21:39.517 に答える
0

エラーはありましたか?

テンプレートのエラー メッセージを次のようにレンダリングします。

{{ form_errors(form) }} 

またはコントローラーのエラー配列にアクセスします。

$form->getErrors()

何かヒントになると思います

于 2012-07-21T12:13:42.923 に答える