2016-02-22 4 views
0

Глядя на какой-либо базового примера на ZF2 форм, у меня есть что-то вроде этого:Как я могу использовать формы ZF2 в качестве автономного модуля в своем приложении PHP?

В контроллере (любой основной учебник пример)

$username = new Element\Text('username'); 
    $username->setLabel('Username')->setAttributes(array(
     'class' => 'username', 
     'size' => '30' 
    )); 

    $form = new Form('my-form'); 
    $form->add($username); 
    return $this->partial("xxx.phtml", array(
     'form' => $form 
    )); 

В видовом

/** 
* inside view template 
* 
* @var \Zend\View\Renderer\PhpRenderer $this 
*/ 
echo $this->form($this->form); 

Ошибка Я получаю

PHP Fatal error: Uncaught exception 'Zend\ServiceManager\Exception\ServiceNotFoundException' with message 'Zend\View\HelperPluginManager::get was unable to fetch or create an instance for form' in vendor\zendframework\zend-servicemanager\src\ServiceManager.php:557 
Stack trace: 
#0 vendor\zendframework\zend-servicemanager\src\AbstractPluginManager.php(161): Zend\ServiceManager\ServiceManager->get('form', true) 
#1 vendor\zendframework\zend-view\src\Renderer\PhpRenderer.php(372): Zend\ServiceManager\AbstractPluginManager->get('form', NULL) 
#2 vendor\zendframework\zend-view\src\Renderer\PhpRenderer.php(390): Zend\View\Renderer\PhpRenderer->plugin('form') 
#3 module\XXX\view\xxx\xxx.phtml(8): Zend\View\Renderer in vendor\zendframework\zend-servicemanager\src\ServiceManager.php on line 557 

Я подозреваю, что некоторые фундаментальные плагин не установлен. Возможно, даже служба, которая должна зарегистрировать плагин, не настроена (ServiceManager)

Что я могу сделать, чтобы получить формы ZF2, работающие в моем другом приложении, отличном от ZF2?

Мое намерение использовать компонент формы ZF2 для создания форм и использования их в моем приложении php.

ответ

1

Поскольку вы не используете полное приложение, ViewPluginManager не будет содержать имя формы просмотреть посредников по умолчанию; поскольку они живут в пространстве имен Zend\Form\View.

Вы можете легко зарегистрировать недостающие сервисы несколькими строками, наилучшим образом расположенными на вашем «фабрике рендеринга», если таковой имеется.

$viewPluginManager = $render->getHelperPluginManager(); 

$formConfig = new \Zend\Form\View\HelperConfig(); 
$formConfig->configureServiceManager($viewPluginManager); 

echo $render->form($this->form); 
+1

как вы это сделаете, это потрясающе !! – Dennis