2017-02-02 1 views
1

사용자가 로그인 할 때마다 모든보기에 변수를 전달하려고 시도하고 내 routes.php 파일에 작업을 넣습니다.View :: share를 사용하여 Controller Action을 호출하려고합니다.

//functions only execute when the user is logged in 
Route::group(array('before' => 'auth'), function(){ 

     View::share('ctxr', 'user is authenticated'); 

}); 

현재 Laravel 4.2을 사용하고 있습니다. 정적 변수를 사용하면 공유 기능이 예상대로 작동합니다. 내가 어떤 부분 또는보기에서 {{ $ctxr }}를 호출 할 경우, 올바르게 표시하지만 나는 basecontroller에서 작업을하고 난이 비슷한 일을 생각하고있을 때 문제가 있습니다 :

View::share('ctxr', [email protected]); 

를 반환 모든보기에 생성 된 통계 하지만 오류가 계속 발생하면 View::share 함수에서 컨트롤러 함수를 호출하는 가장 좋은 방법은 무엇입니까? Laravel이 사용 가능하게 만들었으므로 세션 사용을 피하려고합니다. ...

감사합니다.

+0

어떤 오류가 발생합니까? – Derek

+0

즉시 게시 한, 정적 함수, 메서드를 변환하고 그것을 호출 해보십시오 ::보기 :: 공유 ('ctxr', BaseController :: getStats()); '그리고 그것은 정적 방법으로 .... 많은 시련 후에 ... – Andaeiii

답변

1

두 번째 매개 변수는 문자열 또는 배열이어야합니다. 콜백 함수는 작동하지 않습니다. 그러나 당신이 할 수있는 것은 반환 된 값을 변수에 할당하고 함께 전달하는 것입니다.

Route::group(array('before' => 'auth'), function(){ 

    $bc = new BaseController(); 
    $stats = $bc->getStatistics(); 
    // Or if getStatistics is defined as a static function 
    $stats = BaseController::getStatistics(); 
    View::share('ctxr', $stats); 

}); 
+0

... 덕분에, 당신의 접근 방식을 사랑합니다. – Andaeiii

관련 문제