我正在寻找有关使用 Zend 2 和 Doctrine 2 进行身份验证的教程。特别是控制器和适配器的创建。
官方文档太全球化了,对我的帮助不够。
谢谢你
编辑:
我使用“Doctrine Entity”(命名空间用户\实体;)
实体在 module.config.php 文件中注册:
'doctrine' => array(
'driver' => array(
__NAMESPACE__ . '_driver' => array(
'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
'cache' => 'array',
'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity')
),
'orm_default' => array(
'drivers' => array(
__NAMESPACE__ . '\Entity' => __NAMESPACE__ . '_driver'
)
)
),
)
但是现在,我怎样才能将我的 identityClass 键指向我的适配器?控制器 :
use Zend\Mvc\Controller\AbstractActionController,
Zend\View\Model\ViewModel,
Zend\Authentication\AuthenticationService,
Doctrine\ORM\EntityManager,
DoctrineModule\Authentication\Adapter\ObjectRepository as DoctrineAdapter,
User\Entity\User,
User\Form\UserForm;
class UserController extends AbstractActionController
{
protected $em;
public function setEntityManager(EntityManager $em)
{
$this->em = $em;
}
public function getEntityManager()
{
if (null === $this->em)
$this->em = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager');
return $this->em;
}
public function getRepository()
{
if (null === $this->em)
$this->em = $this->getEntityManager()->getRepository('User\Entity\User');
return $this->em;
}
public function loginAction()
{
....
????????????
$adapter = new DoctrineAdapter();
$adapter->setIdentityValue($username);
$adapter->setCredentialValue($password);
$auth = new AuthenticationService();
$result=$auth->authenticate($adapter);
????????????
}
}
我遇到了这个错误:在第 132 行第 123 行的 ...doctrine\doctrine-module\src\DoctrineModule\Options\AuthenticationAdapter.php 中的非对象上调用成员函数 getRepository():返回 $this-> objectManager->getRepository($this->identityClass);