Forms Zend\Form:在Zend/Form/Fieldset.php中对非对象调用成员函数insert()

Forms Zend\Form:在Zend/Form/Fieldset.php中对非对象调用成员函数insert(),forms,zend-framework2,Forms,Zend Framework2,我正在学习如何使用Zend Framework 2(2.1.4)表单,并遇到了这个错误 Call to a member function insert() on a non-object in ... /Zend/Form/Fieldset.php on line 178 我不想使用表单自动连接到数据库,事实上,我只想使用表单来帮助验证,并将从表单中提取并用值数组填充它。如何关闭表单对象中的数据库连接 我习惯于处理ZF1表单,所以这种新的表单系统令人困惑。但是,一旦我考虑过,我们可以在视图脚

我正在学习如何使用Zend Framework 2(2.1.4)表单,并遇到了这个错误

Call to a member function insert() on a non-object in ... /Zend/Form/Fieldset.php on line 178
我不想使用表单自动连接到数据库,事实上,我只想使用表单来帮助验证,并将从表单中提取并用值数组填充它。如何关闭表单对象中的数据库连接

我习惯于处理ZF1表单,所以这种新的表单系统令人困惑。但是,一旦我考虑过,我们可以在视图脚本中使用表单元素进行格式化的方式将会很好。那些老装修工真讨厌。无论如何,对我来说,使用表单而不处理绑定的数据库对象会很好。这可能吗?除了一个简单的表单之外,还需要一个使用InputFilterAwareInterface类的模型类,这看起来太复杂了。但是一步一个脚印,我甚至无法显示表单

谢谢你的帮助

以下是我的控制器、窗体和视图脚本:

表格类别:

namespace FBWeb\Form;
use Zend\Form\Form;
use Zend\Form\Element;
class ClientForm extends Form
{
    public function __construct()
    {
        $this->setAttribute('method', 'post');

        $this->add(array(
            'name' => 'client',
            'type' => 'Zend\Form\Element\Text',
            'options' => array(
                'label' => 'Client Name',
            ),
            'attributes' => array(
                'type' => 'text',
            ),

        ));

        $this->add(array(
            'name' => 'submit',
            'attributes' => array(
                'type'  => 'submit',
                'value' => 'Add'
            ),
        ));
    }
}
控制器类:

namespace FBWeb\Controller;
use Zend\Debug\Debug;
use Zend\Mvc\MvcEvent;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Zend\Session\Container;
use Zend\Http\Request;
use FBWeb\Form\ClientForm;

class ClientController extends AbstractActionController
{

    public function indexAction()
    {
        $clientform = new ClientForm();
        return array('form' => $clientform);
    }
}
index.phtml视图脚本:

<div id="clientformtable">
<?php 
$form = $this->form;
$form->setAttribute('action','/app/client/add');
$form->prepare();
echo $this->form()->openTag($form);
$client = $form->get('client');
echo $this->formRow($client);
echo $this->form()->closeTag();
?>
</div>

由于表单设置不正确,因此会出现这种情况以及类似的错误消息。正如您在上面的代码中所看到的,
\u construct()
函数不调用父构造函数。因此,内部“引导”不会发生,并且会发生错误

处理
Zend\Form\Form
和/或
Zend\Form\Fieldset
时,必须确保始终调用父构造函数

parent::__construct('client-form');

哇!就这样!!非常感谢你,山姆!!有一次我想到了其中的“家长”,但老实说,我对整个OOP的理解还不够深刻。我敢打赌,如果我能更好地理解它,我可能早就知道该怎么做了。再次感谢您的快速回复!还有,只是一点评论。。。我只是又看了一遍文档,果然,我错过了对父构造函数的调用。我不能告诉你有多少次我浏览了这些例子和我的代码,还有谷歌的例子,但都没听清楚。编程中最令人沮丧的事情之一是,有时候,你完全忽略了一个明显的错误。谢谢你花时间帮忙!