更新:私は何の答えも得ていないので、もっと簡単な例を使って投稿全体を書き直しました。うまくいけば、これは問題を明らかにするのに役立ちます。Assertアノテーションを使用したsymfony2の検証が機能しない
フォームの検証に問題があります。私はNotBlank()アサーションを動作させることができますが、Type()は私のためには機能しません。まず、コードは次のとおりです。
/* ...\Entity\LineItem.php */
<?php
namespace Rialto\ExperimentBundle\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class LineItem
{
/**
* @var integer
* @Assert\NotBlank()
* @Assert\Type(type="integer")
*/
private $quantity = 0;
public function getQuantity()
{
return $this->quantity;
}
public function setQuantity($quantity)
{
$this->quantity = $quantity;
}
}
/* ...\Controller\DefaultController.php */
<?php
namespace Rialto\ExperimentBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Rialto\ExperimentBundle\Entity\LineItem;
class DefaultController extends Controller
{
public function indexAction()
{
return $this->testValidation();
}
private function testValidation()
{
$item = new LineItem();
$form = $this->createFormBuilder($item)
->add('quantity', 'integer')
->getForm();
$request = $this->getRequest();
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
if ($form->isValid()) {
return new Response('Form is valid.');
}
}
return $this->render('RialtoCoreBundle:Form:basicForm.html.twig', array(
'form' => $form->createView(),
));
}
}
入力を空白のままにすると、予想通りにエラーメッセージが表示されます。しかし、入力に「adsf」と入力すると、「Form is valid」という出力が表示されます。私はYAMLとPHPバリデーションを使って同じことを試みました。誰かが私が間違って行ったことを見ることができますか?それは、私はそれが役に立てば幸いちょうどguess..Butだ
$request->isPost()
:このため
$this->isPost($request)
: -
おかげで、 イアン
すばらしい答え!リンク、特にバグレポートに感謝します。 –