2017-05-24 12 views
0

내 프로젝트에 정책을 구현하려고하는데 UserRelationPolicy에 추가하려는 askFriend 메서드가 있습니다.정책이없는 Laravel Gate 리소스가

그래서 내 UserRelationPolicy에서 askFriend 메서드를 구현했지만 [email protected]에서 호출하려고하면이 메서드에서 호출하는 방법을 스스로에게 물었습니다.

무언가는 $this->authorize('askFriend', $friend);과 같지만 전혀 작동하지 않습니다. 그래서 문서에 추가 검색 나는이 같은 자원 이름에 게이트 방법으로 UserRelationPolicy의 특정 방법을 결합 할 수 있음을 발견 Documentation Writing Gate

: 당신은 여기에 표현을 찾을 수 있습니다

Gate::resource('userrelation', 'UserRelationPolicy', [ 
    'userrelation.askfriendrelation' => 'askFriendRelation' 
]); 

이 코드를 실행하려고하면 다음과 같은 오류가 발생합니다.

Call to undefined method Illuminate\Auth\Access\Gate::resource() 

그리고 아무것도 없습니다. Resource 메서드가 전혀 존재하지 않는 것 같습니다. 많은 수색 후에, 머리말에 각 Gate를 포함하는 것을 시도하는. 정적으로 또는 인스턴스로 호출하려고합니다. 아무것도 작동하지 않으며 그 방법은 찾을 수 없을 것입니다 ...

뭔가 잊었나요? 어떻게 정책 클래스의 컨트롤러에서 사용자 정의 메서드를 호출 할 수 있습니까?

답변

0

5.4를 사용 하시겠습니까? Gate :: resource 메소드는 5.4에서만 구현되었습니다. 뒤에 버전을 사용하는 경우 Gate::define을 사용해야합니다. 이 같은 App\Providers\AuthServiceProvider에서

설정 게이트 능력 :

Gate::define('userrelation.askfriendrelation', '[email protected]'); 
+0

나에게 다음과 같은 결과'Laravel 프레임 워크 5.4.18' 그래서 내가 올바른 버전에있어 생각을 제공 -v' 명령'PHP는 장인 그러나 나는 그 방법을 찾지 못했습니다 ... – dib258

+0

'Illuminate \ Auth \ Access \ Gate.php'에서 Gate 클래스를 확인하고 이것을 다음과 비교하십시오 :'https://github.com/laravel/framework/blob/5.4/src/Illuminate/Auth/Access/Gate.php'. 코드에 차이가 있다면 composer.json을 다시 확인하고'composer update'를 실행해야합니다. –

+0

오늘 같은 오류가 발생하여 5.4.24로 업데이트 된'compose update'를 실행하여 문제가 해결되었습니다. 기회를 잡으세요. –