Zend framework2 为什么不通过表单提交发送数据(zf2表单和过滤器)?
我有问题: 当我填写表单并按下add按钮时,页面被重新加载,但没有数据被添加到数据库中Zend framework2 为什么不通过表单提交发送数据(zf2表单和过滤器)?,zend-framework2,zend-filter,zend-form2,zend-inputfilter,Zend Framework2,Zend Filter,Zend Form2,Zend Inputfilter,我有问题: 当我填写表单并按下add按钮时,页面被重新加载,但没有数据被添加到数据库中 新闻控制器,添加操作的代码如下: public function addAction() { $form = new AddNewsForm(); $form->get('submit')->setValue('Add1'); $request = $this->getRequest(); if ($request->isPost()) {
新闻控制器
,添加
操作的代码如下:
public function addAction() {
$form = new AddNewsForm();
$form->get('submit')->setValue('Add1');
$request = $this->getRequest();
if ($request->isPost()) {
$form->setData($request->getPost());
var_dump($form->isValid());
if ($form->isValid()) {
echo "form is valid";
$objectManager = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager');
$blogpost = new NewsItem();
$blogpost->exchangeArray($form->getData());
$blogpost->setCreated(time());
$blogpost->setUserId(0);
$objectManager->persist($blogpost);
$objectManager->flush();
// Redirect to list of blogposts
return $this->redirect()->toRoute('news');
}
}
return array('form' => $form);
}
类AddNewsForm
包含为use\News\Form\AddNewsForm作为AddNewsForm代码>以上
我试着调试代码,发现$form->isValid()
总是返回false。我试着填写表格的所有字段——上面说表格无效。如果不是所有字段都填写,则也为false
我认为,问题在于验证,因此我将在这里添加如何将assing过滤器添加到表单中。这是我如何将筛选器分配到表单的:
$this->setInputFilter(new AddNewsInputFilter());
类AddNewsInputFilter
包含在以下内容中:
use \News\Form\AddNewsInputFilter as AddNewsInputFilter;
我认为在那里粘贴大约100行代码是不好的,因此我将只提供一个指向github repo中文件的链接(此处提供控制器/文件的完整代码):
- -文件,我在其中创建表单
- -文件,我设置文件的位置
- -文件,控制器,我在其中调用创建的表单
- -我的模块的根目录
所以问题是$form->isValid()代码>不显示表单是否有效或不正确,我不知道原因。注意,请求得到了正确的处理,并且第一个条件已通过(但第二个条件未通过)。这就是问题所在,这就是我在这里写作的原因
我怎样才能解决它
感谢是前进 在控制器(调用$form->isValid()后)或视图中尝试var\u dump($form->getMessages())
和var\u dump($form->getInputFilter()->>getMessages())
。看看你在巫婆元素上犯了什么错误
注意:getMessages()
如果尚未调用$form->isValid()
,则将为空
更新:在控制器中执行此操作:
var_dump($form->isValid());
var_dump($form->getMessages())
var_dump($form->getInputFilter()->getMessages())
在控制器中尝试$form->getMessages()
和$form->getInputFilter()->>getMessages()
(调用$form->isValid()
后)或查看。看到你在巫婆元素上犯了什么错误了吗?@Exlord我已经试过getMessage了,但没用。什么也看不出来。我将尝试第二种方法,你在评论中提到的,稍后,当它是可能的。我不明白为什么我必须在isValid函数之后使用它。我不能在条件允许的情况下使用它,因为我现在永远不会在那里。您的意思是处于条件中还是之后?getMessages()
将为空,如果尚未调用$form->isValid()
,您有一个var\u转储($form->isValid())在代码中,将getMessages()
放在后面。确定。非常感谢。我稍后再试试。@Exlord,啊!!!我试过了!首先,我将数据设置到表单,然后执行var_dump($form->isValid())
和$form->getMessages()代码>。没有显示任何消息。这里的代码不多,所以我只显示图像: