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的方法名,改成一个单词,才能顺利进入前置操作