如何在我的PHP应用程序中使用ZF2表单作为独立模块?

Looking at any kind of basic example on ZF2 forms, I have something like this:

In Controller (any basic tutorial example)

    $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
    ));

In View

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

Error I get

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

I suspect that some fundamental plugin is not set up. Perhaps even the service that must register the plugin is not set up (ServiceManager)

What can I do to get ZF2 forms working in my otherwisely non-ZF2 app?

My intent is to use ZF2 form component to build forms, and to use them in my php application.

As you are not using the full application, the ViewPluginManager will not be provided with the names of the form view helpers by default; as they live the Zend\Form\View namespace.

You can easily register the missing services with a few lines best placed in your 'render factory' if you have one.

$viewPluginManager = $render->getHelperPluginManager();

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

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