2011-05-27 143 views
0

任何人都可以告诉我如何验证其他页面上的数据(哪里没有创建表单对象)?Symfony 1.4验证

事情是:在页面'A'我创建带有自己验证器的表单对象并向用户显示表单。但是,该操作转到页面'B',我需要验证数据。

我想要做这样的事情(页“B”):

$form = new someForm(); 
$form->bind($this->getRequest()->getParameter('data')); 
if($form->isValid()) 
{ 
    print 'true'; 
} 
else 
{ 
    print 'false'; 
} 

但是,你可以想像,它会打印“假”。

回答

1

我猜它发生是由于Symfony的

的形式CSRF保护

尝试使用此代码

$form = new someForm(); 
$form->disableLocalCSRFProtection(); 
$form->bind($this->getRequest()->getParameter('data')); 
if($form->isValid()) 
{ 
    print 'true'; 
} 
else 
{ 
    print 'false'; 
} 
0

也许你可以解决这个问题,如:

public function executeFoo($request){ 
    $this->form = new fooForm(); 
    $this->getUser()->setAttribute('tmpForm', $this->form); 
} 
在窗体

的行动必须指向模块/吧 那里你可以做:

public function executeBar($request){ 
    $this->forward404Unless($form = $this->getUser()->getAttribute('tmpForm')); 
    $form->bind($this->getRequest()->getParameter('data')) 
    // and so on 
}