簡體   English   中英

如何在ZF1項目的視圖中呈現ZF2表單

[英]How to render ZF2 form in view in ZF1 project

我正在嘗試在ZF1項目中使用ZF2類。 我一直在關注此鏈接: 在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表單?

我正在按照本教程創建表單: Zend Framework 2:擴展Zend \\ Form以添加Select,Multicheckbox,Email,Date,Textarea和Radio元素

我只需要確認我是否可以在ZF1項目中使用ZF2表單。 如果可以使用,請告訴我該教程的視圖文件。

雖然我個人無法將ZF2集成到ZF1中提供任何建議; 從ZF2的角度來看,您收到的錯誤是由於以下原因引起的:

$formObject->openTag($form);

您正在嘗試使用表單對象Zend\\Form\\Form來呈現Zend\\Form\\Form的打開標記。 相反,您需要使用表單視圖助手Zend\\Form\\View\\Helper\\Form ),然后將表單( $form )作為參數傳遞。

例如

$this->form()->openTag($form);

您實際上是在對表單結束標記(不需要任何參數)進行正確處理:

echo $this->form()->closeTag();

此外,我不確定$formObject = new Form()用途; 在您發布的代碼中不需要新的表單實例(無論如何,您實際上不應在視圖中創建新的實例)。

$this->form()將被渲染器的魔術__call()捕獲; 然后它將檢查是否有使用服務名稱form注冊的視圖助手(找到后將其返回)。

所有視圖助手都在此庄園中工作。 它們是對提供給他們的參數進行內省並呈現適當HTML的對象。

例如,使用$this->form()來呈現表單打開標記。 另一個示例可能是URL幫助程序( $this->url('route') ),它將從提供的參數生成URL。

我建議閱讀有關視圖幫助器的文檔,並仔細查看已經內置的視圖幫助器的源代碼,因為這將使您更好地了解它們的工作方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM