为什么这个表格一直无效
Why is this form invalid all the time
我有这个表单,它只有一个字段,方法 isValid() 一直将其视为无效,就像我每次提交它一样,我一直在按应有的方式提交文本
//form
class CategoryForm extends Form
{
public function __construct()
{
parent::__construct('category');
$this->setAttribute('method', 'post');
$this->add(array(
'name' => 'name',
'type' => 'text',
'options' => array('label' => 'Name',),
'required' => true,
'filters' => array(
array('name' => 'StripTags'),
array('name' => 'StringTrim'),
),
));
$this->add(array(
'name' => 'submit',
'attributes' => array(
'type' => 'submit',
'value' => 'Save',
'id' => 'submitbutton',
),
));
}
}
我想这可能是有问题的部分,因为它可以正常工作,所以没有错误消息。
//validation clause at controller
$category = new Category;
$form = new CategoryForm();
$form->bind($category);
$request = $this->getRequest();
if ($request->isPost()) {
$form->setInputFilter($category->getInputFilter());
$form->setData($request->getPost());
if ($form->isValid()) {
$em = $this->getEntityManager();
$em->persist($category);
$em->flush();
$this->flashMessenger()->addSuccessMessage('category Saved');
return $this->redirect()->toRoute('category');
}
}
如果我将代码更改为此它会保留数据
public function addAction()
{
$form = new CategoryForm();
$form->get('submit')->setValue('Add');
$request = $this->getRequest();
if ($request->isPost()) {
$category = new category();
$form->setInputFilter($category->getInputFilter());
$form->setData($request->getPost());
$form->isValid();
$category->exchangeArray($form->getData());
$em = $this->getEntityManager();
$em->persist($category);
$em->flush();
$this->flashMessenger()->addSuccessMessage('Category Saved');
return $this->redirect()->toRoute('category');
}
return new ViewModel(array(
'category' => $category,
'form' => $form
));
}
您是否真的在验证之前将提交的值传递给表单?
我经常这样做:
if ($this->_request->isPost() && $form->isValid($this->getRequest()->getPost())) {
...
Your save code here...
如果您这样做,请检查表单中出现验证错误的原因...
var_dump($form->getMessages());
我有这个表单,它只有一个字段,方法 isValid() 一直将其视为无效,就像我每次提交它一样,我一直在按应有的方式提交文本
//form
class CategoryForm extends Form
{
public function __construct()
{
parent::__construct('category');
$this->setAttribute('method', 'post');
$this->add(array(
'name' => 'name',
'type' => 'text',
'options' => array('label' => 'Name',),
'required' => true,
'filters' => array(
array('name' => 'StripTags'),
array('name' => 'StringTrim'),
),
));
$this->add(array(
'name' => 'submit',
'attributes' => array(
'type' => 'submit',
'value' => 'Save',
'id' => 'submitbutton',
),
));
}
}
我想这可能是有问题的部分,因为它可以正常工作,所以没有错误消息。
//validation clause at controller
$category = new Category;
$form = new CategoryForm();
$form->bind($category);
$request = $this->getRequest();
if ($request->isPost()) {
$form->setInputFilter($category->getInputFilter());
$form->setData($request->getPost());
if ($form->isValid()) {
$em = $this->getEntityManager();
$em->persist($category);
$em->flush();
$this->flashMessenger()->addSuccessMessage('category Saved');
return $this->redirect()->toRoute('category');
}
}
如果我将代码更改为此它会保留数据
public function addAction()
{
$form = new CategoryForm();
$form->get('submit')->setValue('Add');
$request = $this->getRequest();
if ($request->isPost()) {
$category = new category();
$form->setInputFilter($category->getInputFilter());
$form->setData($request->getPost());
$form->isValid();
$category->exchangeArray($form->getData());
$em = $this->getEntityManager();
$em->persist($category);
$em->flush();
$this->flashMessenger()->addSuccessMessage('Category Saved');
return $this->redirect()->toRoute('category');
}
return new ViewModel(array(
'category' => $category,
'form' => $form
));
}
您是否真的在验证之前将提交的值传递给表单?
我经常这样做:
if ($this->_request->isPost() && $form->isValid($this->getRequest()->getPost())) {
...
Your save code here...
如果您这样做,请检查表单中出现验证错误的原因...
var_dump($form->getMessages());