0

我正在尝试保存视图以进行计数。它仅在经过身份验证的用户访问此页面时保存记录。当未经身份验证的用户访问此功能时,保存失败。

 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);
    }
4

1 回答 1

0

我认为这是因为您的模型PhotoViews中的验证规则。检查表用户中是否存在 user_id 的验证。

在此行中将 0 更改为 null

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

请务必检查模型中的 allowEmpty 和数据库表中的 null 的验证。

您可以通过获取这样的验证错误来调试它。

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

使用登录名和不登录名检查此项。

希望这会有所帮助。

于 2017-09-20T03:43:36.260 回答