Php 如何在ZF1项目中呈现视图中的ZF2表单

Php 如何在ZF1项目中呈现视图中的ZF2表单,php,forms,zend-framework,zend-framework2,Php,Forms,Zend Framework,Zend Framework2,我试图在ZF1项目中使用ZF2类。我一直在跟踪此链接:。我可以使用ZF2类通过继承AbstractTableGateway来创建模型、表模型 我正在控制器上获取对象。但当我试图在视图上呈现这些表单对象(phtml)时。这是一个抛出错误,如下所示: Fatal error: Call to undefined method Zend\Form\Form::openTag() in /var/www/myproject/application/modules/tools/views/scripts/

我试图在ZF1项目中使用ZF2类。我一直在跟踪此链接:。我可以使用ZF2类通过继承AbstractTableGateway来创建模型、表模型

我正在控制器上获取对象。但当我试图在视图上呈现这些表单对象(phtml)时。这是一个抛出错误,如下所示:

Fatal error: Call to undefined method Zend\Form\Form::openTag() in /var/www/myproject/application/modules/tools/views/scripts/tablesample/add.phtml on line 14
以下是查看文件:

<?php
use Zend\Form\Form as Form;
$baseUrl = $this->baseUrl();
$formObject = new Form();
// this is demo  print block of form element
$form = $this->form;
$form->setAttribute('action', $baseUrl.'tools/tablesample/add');
$form->prepare();

echo $formObject->openTag($form);
echo $this->formRow($form->get('name'));
echo $this->formRow($form->get('gender'));
echo $this->formRow($form->get('hobby'));
echo $this->formRow($form->get('email'));
echo $this->formRow($form->get('birth'));
echo $this->formRow($form->get('address'));
echo $this->formRow($form->get('direction'));
echo $this->form()->closeTag();

?>

我认为ZF1没有检测到ZF2的表单帮助器,或者在ZF1项目中可能有其他方法使用ZF2表单帮助器

如何在ZF1应用程序中正确呈现ZF2表单

我将按照本教程创建表单:

我只需要确认是否可以在ZF1项目中使用ZF2表单。
如果可以使用,请向我展示本教程的视图文件。

而我个人无法提供任何将ZF2集成到ZF1的建议;从ZF2方面来看,您收到的错误是由以下行引起的:

$formObject->openTag($form);
您正试图使用表单对象
Zend\form\form
呈现表单的open标记。相反,您需要使用表单视图帮助程序(
Zend\form\view\helper\form
),然后将表单(
$form
)作为参数传递

比如说

$this->form()->openTag($form);
实际上,您对表单结束标记(不需要任何参数)的操作是正确的:

另外,我不确定您使用
$formObject=new Form()的目的;在您发布的代码中不需要新的表单实例(而且您不应该像这样在视图中创建新实例)

$this->form();然后,它将检查是否有使用服务名称
表单注册的视图帮助程序(找到时返回)

所有的视图助手都在这个庄园工作。它们是对提供给它们的参数进行内省并呈现适当HTML的对象

例如,
$this->form()
用于呈现表单打开标记。另一个例子是URL帮助器(
$this->URL('route')
),它将从提供的参数生成URL


我将推荐并仔细查看已内置的视图帮助程序的源代码,因为这将使您对它们的工作方式有一个很好的了解。

对不起$formObject->openTag($form);是配音代码。我还使用了$this->form()->openTag($form);标签是标准的,但也不起作用。你说的“不起作用”是什么意思?你有错误吗?您是否使用了
echo
来确保打印结果<代码>echo$this->form()->openTag($form)致命错误:对第15行/var/www/myproject/application/modules/tools/views/scripts/tablesample/add.phtml中的非对象调用成员函数openTag()
echo $this->form()->closeTag();