2017-09-19 6 views
0

私はカウントするためにビューを保存しようとしています。認証されたユーザーがこのページにアクセスしたときにのみレコードを保存します。認証されていないユーザーがこの機能にアクセスすると、保存に失敗します。cakePhp 3.4 Author

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の検証があるかどうかを確認してください。

この行のヌルに変更0

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

は、データベーステーブルのモデルとヌルでallowEmptyの検証を確認してください。

このような検証エラーを取得することでデバッグできます。

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

ログインしてログインして確認します。

希望すると、これが役立ちます。