gpt4 book ai didi

php - 可以将 Zend Form 2 与 Zend Framework 1 一起使用吗?

转载 作者:可可西里 更新时间:2023-11-01 01:05:06 24 4
gpt4 key购买 nike

我尝试将新框架的 Form 文件夹与 Zend Framework 1 中的那个交换,但是没有用。

我还尝试将 ZF1 指向新的 Form 2.0 文件夹的库,但我也无法让它工作。

有人知道怎么做吗?

最佳答案

可以将 ZF2 组件与 ZF1 一起使用,并且在大多数情况下相对简单。

首先,您需要将 zf2 克隆到您的库路径中,因此 cd 到 library 并键入:-

git clone https://github.com/zendframework/zf2.git Zf2

这将在库下创建一个 Zf2 文件夹。

我们现在需要告诉自动加载器如何找到 zf2 文件。在您的 Bootstrap 中添加以下内容:-

protected function _initZf2()
{
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->pushAutoloader(new App_Loader_Autoloader_Zf2(), 'Zend');
}

然后我们创建自动加载器。我有一个名为 App_ 的 namespace ,它包含在 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',
),
));
}
}

现在,在您的 Controller 中,您可以实例化 zf2 表单:-

$this->view->form = new Application_Form_Zf2();
$this->view->form->prepareElements();

因为我们使用的是 ZF1 View ,所以我们不会自动访问 view helpers用于渲染 ZF2 表单,因此我们必须在需要时在 View 中显式实例化它们:-

$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 View 助手中。

关于php - 可以将 Zend Form 2 与 Zend Framework 1 一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12956276/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com