2013-05-23 2 views
7

나는 이와 같은 탐색 모음이 있습니다.와일드 카드를 사용하여 모든보기와 일치하는보기 :: 작곡가 바인딩?

<li>Account</li> 
    <ul> 
     <li>Register</li> 
     <li>Login/li> 
     ... 

Auth::check()에 따라 동적으로 업데이트하고 싶습니다. 예를 들어 사용자가 로그인하면 "내 프로필 페이지"로 "계정"이 변경되고 하위 배열은 적절한 배열로 바뀝니다.

내 컨트롤러에서 View::make calls을 편집하지 않고이 작업을 수행해야합니다. 그것은 꽤 나빠 보인다.

이와 같은 해결책은 내가 찾고있는 것입니다.

View::composer('home.*', function($view) { 
    if(Auth::check()) 
     return $view->nest('accountArea', 'home.navigation-loggedIn', null); 
    else 
     return $view->nest('accountArea', 'home.navigation-visitor', null); 
}); 

더 나은 대안이있는 경우 나도 듣고 싶습니다.

+0

을 해치지 않을 것입니다 동의? –

+0

조금 더 자세히 설명해 주시겠습니까? – Aristona

+0

글쎄, 나는 당신이 레이아웃을 사용하고 있고, 당신이 레이아웃에 집어 넣기를 원한다고 가정하고있다. 그래서 당신은'View :: composer ('layouts.default', ...)'와 같은 것을 할 것입니다. –

답변

8

Laravel에서 와일드 카드와 비슷하게 보입니다. 그들은 지금 현재 문서화되지 않았습니다.

View::composer('admin.layouts.*', function($view) 
{ 
    if (Sentry::check()) $view->with('navigation', View::make('admin._partials.navigation')); 
    else     $view->with('navigation', null); 
}); 

내가 찾고있는 것입니다.

업데이트 : 여기에 대체 솔루션

또한 레이아웃에 바인딩 할 수 있으므로 레이아웃 작곡가 혜택을 누릴 것으로 확장 모든 서브 뷰입니다.

View::composer('admin.layouts.main_layout', function($view) 
{ 
    if (Sentry::check()) $view->with('navigation', View::make('admin._partials.navigation')); 
    else     $view->with('navigation', null); 
}); 

@extend('admin.layouts.main_layout')의 모든보기에 작곡가를 바인딩합니다.

+0

우와, 와일드 카드를! –

+0

필자의 경우 뷰 작성자가 작동하지 않았습니다.레이아웃에 변수를 보냈습니다. 하지만 그것은 레이아웃에서만 사용할 수 있었고 확장 한 뷰에서는 사용할 수 없었습니다. 나는'View :: share (key, value)'를 userd했다. –

3

View::share('variable', 'value')을 사용하면 모든보기에서 변수를 공유 할 수 있습니다.

+0

routes.php로 이동합니다. – Aristona

+0

의존적으로, 필자는보기 작곡가를 배치하기 위해'composers.php' 파일을 만들고 싶습니다. –

0

Aristona가 말했듯이 (조언에 감사드립니다.) 와일드 카드가 허용됩니다. 코드를 보면 컴포저가 이벤트 리스너임을 알 수 있으며 문서의 해당 섹션은 Wildcard event listeners입니다.

더 많은 것을 추가하면 궁극적으로 Str::is()Events\Dispatcher에 의해 와일드 카 리스너를 감지합니다. 예를 들어,이 같은 : 한마디로

str_is('namespace::*.view', 'namespace::folder.view') 

, 나는 그게 무슨 대신 레이아웃에보기 작곡가 바인딩에 대한 작은 정보 문구 :

관련 문제