0

我有问题:

当我填写表格并按下添加按钮时,页面被重新加载,但没有数据添加到数据库中。

的代码NewsControlleradd动作如下:

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 存储库中文件的链接(此处提供控制器/文件的完整代码):

所以问题是$form->isValid();没有显示表单有效或不正确,我不知道为什么。请注意,该请求正在正确获取并且第一个条件已通过(但第二个条件未通过)。这就是问题所在,这就是我在这里写的原因。

我该如何解决?

谢谢是提前!

4

1 回答 1

1

try var_dump($form->getMessages()) and var_dump($form->getInputFilter()->getMessages()) in controller(after calling $form->isValid()) or in view . see what error you getting and on witch element ?

NOTICE : getMessages() will be empty if $form->isValid() has not been called yet,

UPDATE : do this in controller :

var_dump($form->isValid());
var_dump($form->getMessages())
var_dump($form->getInputFilter()->getMessages())
于 2014-05-14T04:19:06.713 回答