lass Address extends Controller { //权限验证属性 protected $beforeActionList=[ 'checkScope'=>['only'=>'createOrUpdate'] ]; /** * 验证用户权限 */ protected function checkScope(){ //获取用户权限 $scope=TokenService::getValue('scope'); if ($scope) { if ($scope>ScopeEnum::User) { return true; } } else { throw new Exception("用户权限不够,太特么sorry了!"); } } public function createOrUpdate() { //验证数据 $validate=new AddressValidate(); $validate->goCheck(); //通过令牌获取用户id $uid=TokenService::getValue('uid'); /*根据uid来查找用户数据,判断用户是否存在,如果不存在抛出异常*/ $user=User::get($uid); if (!$user) { throw new Exception('用户不存在'); } //获取用户从客户端提交的地址 $dataArray=input('post.'); $dataArray=$validate->getDataPost($dataArray); /**判断更新或添加地址**/ $userAddress=$user->address; //添加地址 if (!$userAddress) { $user->address()->save($dataArray); } //更新地址 else { $user->address->save($dataArray); } return '成功添加地址!'; /**判断更新或添加地址结束**/ }
无法进入前置方法,只有把createOrUpdate的方法名,改成一个单词,才能顺利进入前置操作