Возможно использовать компоненты ZF2 с ZF1, и по большей части он является относительно прямым.
Прежде всего, вам нужно будет клонировать ZF2 в свой путь к библиотеке, так что компакт-диск в library
и типа: -
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/автозагрузчик/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/Формы/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, мы автоматически не имеют доступа к view helpers, которые используются для визуализации формы ZF2, поэтому мы должны явно их экземпляры в представлении, как мы нуждаемся в них: -
$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);
Это будет выводить Fol мычание HTML: -
<form action="" method="POST">
<label for="name">Your name</label>
<input name="name" type="text" value="">
</form>
Этот метод дает много контроля над выводом ваших форм, и я рекомендовал бы пряча часть кода я поставил в файле PHTML выше прочь в помощник вида ZF1.
Я думаю, что это невозможно! – RDK
Я не думаю, что это невозможно, поскольку все компоненты ZF слабо связаны. Таким образом, все компоненты могут использоваться отдельно. Однако вы не можете использовать код ZF1 для доступа к компоненту формы ZF2, потому что он полностью переписан. См. Также: http://framework.zend.com/manual/2.0/en/ref/overview.html –