我有问题:
当我填写表格并按下添加按钮时,页面被重新加载,但没有数据添加到数据库中。
的代码NewsController
,add
动作如下:
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 as AddNewsForm;
如上。
我试图调试我的代码并意识到,它总是$form->isValid()
返回 false。我试图填写表格的所有字段 - 它说表格无效。如果不是所有的字段都填错了。
我认为问题在于验证,所以我将在这里添加我如何将过滤器添加到表单中。这就是我为我的表单分配过滤器的方式:
$this->setInputFilter(new AddNewsInputFilter());
类AddNewsInputFilter
包含在此:
use \News\Form\AddNewsInputFilter as AddNewsInputFilter;
我不认为将大约 100 行代码粘贴到那里是好的,所以我将提供一个指向我的 github 存储库中文件的链接(此处提供控制器/文件的完整代码):
- AddNewsForm.php — 文件,我在其中创建表单
- AddNewsInputFilter.php — 文件,我在其中设置 fil
- NewsController.php — 文件,控制器,我称之为创建表单
- 存储库链接——我的模块的根目录
所以问题是$form->isValid();
没有显示表单有效或不正确,我不知道为什么。请注意,该请求正在正确获取并且第一个条件已通过(但第二个条件未通过)。这就是问题所在,这就是我在这里写的原因。
我该如何解决?
谢谢是提前!