标签:zend-framework2 zend-form zend-framework php
我试图与Zend Framework 1中的新文件夹交换新框架的Form文件夹,但这没有用.
我还尝试将ZF1指向库中的新Form 2.0文件夹,但是我也无法使其正常工作.
有人知道怎么做吗?
解决方法:
可以将ZF2组件与ZF1一起使用,并且在大多数情况下相对简单.
首先,您需要将zf2克隆到您的库路径中,因此cd到库并键入:-
git clone https://github.com/zendframework/zf2.git Zf2
这将在库下创建一个Zf2文件夹.
现在,我们需要告诉自动加载器如何查找zf2文件.在您的引导程序中添加以下内容:
protected function _initZf2()
{
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->pushAutoloader(new App_Loader_Autoloader_Zf2(), 'Zend');
}
然后,我们创建自动加载器.我有一个名为App_的名称空间,该名称包含在application.ini中,并包含以下内容:
autoloadernamespaces[] = "App_"
我在App / Loader / Autoloader / Zf2.php中创建了自动加载器:-
class App_Loader_Autoloader_Zf2 implements Zend_Loader_Autoloader_Interface
{
public function autoload($class)
{
if(strstr($class, '\\')){
$zf2Class = explode('\\', $class);
$path = 'Zf2/library/' . implode('/', $zf2Class) . '.php';
include_once $path;
}
}
}
现在,当zf1呈现正确的名称空间时,它知道在哪里可以找到zf2类.我们可以创建一个表单,例如Application / Forms / Zf2.php:
use Zend\Form\Form;
use Zend\Form\Element;
use Zend\Form\Element\Text;
class Application_Form_Zf2 extends Form
{
public function prepareElements()
{
$this->add(array(
'name' => 'name',
'options' => array(
'label' => 'Your name',
),
'attributes' => array(
'type' => 'text',
),
));
}
}
现在,在您的控制器中,您可以实例化zf2表单:-
$this->view->form = new Application_Form_Zf2();
$this->view->form->prepareElements();
当我们使用ZF1视图时,我们无法自动访问用于呈现ZF2表单的view helpers,因此我们必须在视图中根据需要显式实例化它们:
$form = $this->form;
$formHelper = new \Zend\Form\View\Helper\Form();
$formText = new \Zend\Form\View\Helper\FormText();
$formLabel = new \Zend\Form\View\Helper\FormLabel();
echo $formHelper->openTag($form);
echo $formLabel($form->get('name'));
echo $formText($form->get('name'));
echo $formHelper->closeTag($form);
这将输出以下HTML:-
<form action="" method="POST">
<label for="name">Your name</label>
<input name="name" type="text" value="">
</form>
此方法使您可以对表单的输出进行很多控制,我建议将我放置在phtml文件中的一些代码隐藏在ZF1视图助手中.
标签:zend-framework2,zend-form,zend-framework,php 来源: https://codeday.me/bug/20191031/1978199.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。