Php 为什么这张表格一直是无效的

Php 为什么这张表格一直是无效的,php,forms,validation,zend-framework,orm,Php,Forms,Validation,Zend Framework,Orm,我有一个表单,它只是一个字段,方法isValid()每次提交它时都将其视为无效,我一直在按应该的方式提交文本 //form class CategoryForm extends Form { public function __construct() { parent::__construct('category'); $this->setAttribute('method', 'post'); $this->add(array( 'n

我有一个表单,它只是一个字段,方法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());

没有错误消息-您的系统是否启用了错误报告功能?如果没有,请在打开PHP标记后立即将错误报告添加到文件的顶部,例如,
需要zend framework专家在这里isValid函数检查什么?什么是有效表单?没有php错误,必须与验证有关,不确定错误是什么,例如它检查的数组状态是否有值,是否是消息数组的stringvar_转储(size=0)emptySuppose显示相关代码。看起来很可能这不是你认为的问题。甚至设置了哪些验证器?我看不到。除所需的
之外的井
。你能一步一步地看一遍代码吗?就是这样,它只有一个字段,但仍然说它无效,也只有一个字段。对不起。对ZF2的熟悉程度不如我对1.x的熟悉。可以的是,我应该添加id字段,即使isvalid()为空