我在ZF2应用程序中有以下类和我的模块配置,它给出了以下错误:
While attempting to create applicationformuserform(alias: Application\Form \UserForm) an invalid factory was registered for this instance type.
UserFormFactory.PHP
<?PHP namespace Application\Factory\Form; use Zend\ServiceManager\FactoryInterface; use Zend\ServiceManager\ServiceLocatorInterface; use Application\Form\UserForm; class UserFormFactory implements FactoryInterface { public function createService(ServiceLocatorInterface $serviceLocator) { $services = $serviceLocator->getServiceLocator(); $entityManager = $services->get('Doctrine\ORM\EntityManager'); $form = new UserForm($entityManager); return $form; } } ?>
UserForm.PHP
<?PHP namespace Application\Form; use Zend\Form\Form; use Zend\InputFilter\InputFilterProviderInterface; use Doctrine\ORM\EntityManager; class UserForm extends Form implements InputFilterProviderInterface { protected $entityManager; public function __construct(EntityManager $entityManager) { parent::__construct(); $this->entityManager = $entityManager; } public function init() { $this->add(array( 'name' => 'username','attributes' => array( 'type' => 'text',),'options' => array( 'label' => 'User Name',)); $this->add(array( 'name' => 'first_name','options' => array( 'label' => 'First Name',)); $this->add(array( 'name' => 'last_name','options' => array( 'label' => 'Last Name',)); $this->add(array( 'name' => 'role_id','type' => 'DoctrineModule\Form\Element\ObjectSelect','options' => array( 'object_manager' => $this->entityManager,'target_class' => 'Application\Entity\Role','property' => 'id','is_method' => true,'find_method' => array( 'name' => 'getRoles','label' => 'User Role',)); } public function getInputFilterSpecification() { return array(); // filter and validation here } } ?>
'form_elements' => array( 'factories' => array( 'Application\Form\UserForm' => 'Application\Factory\Form\UserFormFactory',
而我正在另一个控制器工厂使用这个表格工厂
UserControllerFactory.PHP
<?PHP namespace Member\Factory\Controller; use Zend\ServiceManager\FactoryInterface; use Zend\ServiceManager\ServiceLocatorInterface; use Member\Controller\UserController; use Application\Form\UserForm; class UserControllerFactory implements FactoryInterface { public function createService(ServiceLocatorInterface $serviceLocator) { $services = $serviceLocator->getServiceLocator(); $userForm = $services->get('FormElementManager')->get('Application\Form\UserForm'); $controller = new UserController($userForm); return $controller; } } ?>
谁能告诉我可能是什么问题?