2017-09-19 12 views
0

계산할보기를 저장하려고합니다. 인증 된 사용자가이 페이지에 액세스 할 때 레코드를 저장합니다. Unauthenticated 사용자가이 기능에 액세스 할 때 저장에 실패합니다.cakePhp 3.4 인증

use Cake\ORM\TableRegistry; 
    use Cake\Event\Event; 

     public function beforeFilter(Event $event) 
      { 
        $this->Auth->allow(['view']); 
      } 
     public function view($photoId = null) 
     { 
      $photoViewsTable = TableRegistry::get('PhotoViews'); 
      $photoViews = $photoViewsTable->newEntity(); 
      $photoViews->ip_address = $_SERVER['REMOTE_ADDR']; 
      $photoViews->photo_id = $photoId; 
      $photoViews->user_id = ($this->request->session()->read('Auth.User.id')) ? $this->request->session()->read('Auth.User.id') : 0; 
      $photoViews->ip_address = $_SERVER['REMOTE_ADDR']; 
      $photoViewsTable->save($photoViews); 
    } 

답변

0

나는이 때문에 모델 PhotoViews에서 유효성 검사 규칙의 생각합니다. 테이블 사용자에게 user_id에 대한 유효성 검사가 있는지 확인하십시오. 이 라인

$photoViews->user_id = ($this->request->session()->read('Auth.User.id')) ? $this->request->session()->read('Auth.User.id') : null; 

에서 null로

변경 0은 데이터베이스 테이블의 모델에 allowEmpty의 검증을 반드시 확인하고 널 (null)합니다.

이렇게 유효성 검사 오류를 가져 와서 디버깅 할 수 있습니다.

if(!$photoViewsTable->save($photoViews)){ 
    debug($photoViewsTable->getErrors()); 
} 

로그인없이 로그인없이 확인하십시오.

희망이 도움이 될 것입니다.