저는 책을 읽음으로써 zend 프레임 워크를 배우려고합니다. 지금까지는 모든 코드가 작동했지만 지금은 사용자 인증에 문제가 있습니다. 이 책은 행동 도우미와 교리 2의 엔티티 관리자를 통해이를 수행 할 것을 제안합니다. 여기 Doctrine 2 엔티티 관리자 객체에 비 객체 오류가 발생했습니다.
내가이내 인증합니다 헬퍼 클래스에 사용하고 코드 ...
public function init()
{
// Initialize the errors array
Zend_Layout::getMvcInstance()->getView()->errors = array();
$auth = Zend_Auth::getInstance();
$em = $this->getActionController()->getInvokeArg('bootstrap')->getResource('entityManager');
if ($auth->hasIdentity()) {
$identity = $auth->getIdentity();
if (isset($identity)) {
$user = $em->getRepository('Entities\User')->findOneByEmail($identity);
Zend_Layout::getMvcInstance()->getView()->user = $user;
}
}
}
엔티티 저장소 기능 ...
public function findOneByEmail($email)
{
$rsm = new ResultSetMapping;
$rsm->addEntityResult('Entities\User', 'a');
$rsm->addFieldResult('a', 'id', 'id');
$rsm->addFieldResult('a', 'email', 'email');
$rsm->addFieldResult('a', 'fname', 'fname');
$query = $this->_em->createNativeQuery(
'SELECT a.id, a.fname, a.email FROM users a
WHERE a.email = :email',
$rsm
);
$query->setParameter('email', $email);
return $query->getResult();
}
입니다 페이지 뷰에서 다음 코드를 사용하여 사용자가 로그인했는지 확인합니다.
<?php
if($this->user){
?>Welcome back, <a href="/user/"><?php echo $this->user->fname; ?></a> • <a href="/user/logout/">Logout</a><?php
} ?>
내가 로그인 할 때 if 조건이 충족되지만 사용자 이름이 인쇄되지 않습니다.
이Notice: Trying to get property of non-object in C:\Program Files (x86)\Zend\Apache2\htdocs\dev.test.com\application\views\scripts\user\index.phtml on line 3
이 사람이 나에게이 문제를 해결하는 데 도움을 줄 수 있습니다 :
여기에 오류 나는 그것을 얻을 메시지인가?
두 번 확인했습니다. $ identity는 전자 메일 주소 인 문자열입니다. – liz
그래,이 경우 함수의 반환 값에'var_export'를 시도하여'$ query-> getResult();'가 올바른 데이터를 반환하는지 확인하십시오. – drew010
도우미의 $ user의 var_export : 배열 (0 => Entities \ User :: __ set_state (배열 ('id'=> 1, 'fname'=> 'Liz', 'lname'=> NULL, 'email' => '[email protected]', 'password'=> NULL, 'phone'=> NULL, 'active'=> NULL, 'role'=> NULL, 'created'=> NULL, 'updated'=> NULL, 'inactive'=> NULL,)),) – liz