我的输入过滤器:
namespace FarmAccounts\InputFilter;
use Zend\InputFilter\InputFilter;
class Account extends InputFilter
{
public function init()
{
$factory = $this->getFactory();
$owner = $factory->createInput(array(
'name' => 'owner',
'required' => true,
'validators' => array(
array(
'name' => 'DoctrineModule\Validator\NoObjectExists',
'options' => array(
'object_repository' => $entityManager->getRepository('OAuth2Server\Entity\User'),
'fields' => 'id'
)
)
)
));
$this->add($owner);
}
}
然后当我需要这个过滤器时,我调用:
$filter = $this->serviceManager->get('InputFilterManager')
->get('FarmAccounts\InputFilter\Account');
如您所见$entityManager
,未在任何地方定义,这就是我的问题,我不知道如何在此处添加它。InputFilter 没有服务定位器。也许有一种方法可以为 inputfitler 创建工厂?
更新:
我试图实现ServiceLocatorAwareInterface
,但由于它没有通过服务管理器,所以它没有设置。