2012-11-24 6 views
10

메뉴 데이터 논리를 Laravel에 저장하는 가장 좋은 개념은 무엇입니까? 메뉴 묶음을 어디에 넣을 지. Base_Controller에서 추가 기능 또는 다른 것을 만드시겠습니까?Laravel에 메뉴 로직을 배치 할 위치는 어디입니까?

+0

"메뉴 로직"이란 무엇입니까? –

+0

예를 들어 DB에서 메뉴 요소를 가져 와서 뷰에서 렌더링하기 위해 메뉴 (번들) 저장소에 추가합니다. – Orbitum

답변

24

:이 답변이 Laravel 3 작성되었으며하거나 분리함으로써 달성된다 동적 메뉴를 만드는 가장 최근 Laravel 4


내가 좋아하는 방식으로 작동하지 않을 수 있습니다 메뉴 레이아웃을 만들고 Laravel의 작곡가를 통해 메뉴 데이터를 주입합니다 (Composer PHP 패키지 관리자와 혼동하지 마십시오).

<!-- layouts/default.blade.php --> 

<div id="header">Title</div> 

<div id="menu"> 
    @render('parts.menu') 
</div> 

<div id="content"></div> 
<div id="footer"></div> 

 

 

마지막으로, 우리는 작곡가 통해 변수를 주입 할 수있다.

<?php 

// application/routes.php 

View::composer('parts.menu', function($view){ 
    $view->with('menuitems', Menu::all()); 
}); 

마다 parts/menu.blade.php가 호출이 방법, 작곡가보기를 차단하고 $menuitems 변수를 주입합니다. 그것은

return View::make('blahblah')->with('menuitems', Menu::all())with을 사용하는 것과 동일합니다은 도움이 :) 희망


편집 : 당신이 routes.php의 논리를 가지고 마음에 들지 않으면 당신은 start.php에 넣어 제이슨 루이스 '방법을 고려할 수 있습니다 start.php을 별도의 파일로 분할해야합니다.

start이라고하는 application에 디렉토리를 만들고 일부 파일을 채우십시오.

+ application [DIR] 
    \-> + start [DIR] 
     |-> autoloading.php 
     |-> composers.php 
     |-> filters.php 
     \-> validation.php 

그런 다음 당신은 아이디어를 가지고 당신의 application/start.php

require __DIR__ . DS . 'start' . DS . 'autoloading.php'; 
require __DIR__ . DS . 'start' . DS . 'filters.php'; 
require __DIR__ . DS . 'start' . DS . 'composers.php'; 
require __DIR__ . DS . 'start' . DS . 'validation.php'; 

의 끝 부분에 코드 줄을 추가합니다. composers.php에 작곡가 기능을 추가하십시오.

여기에서 전체 기사 읽기 : http://jasonlewis.me/article/laravel-keeping-things-organized

+0

나는 두 개의 대답을 하나로 합쳤다고 생각한다. – Orbitum

+3

새 버전에서는 @render ('parts.menu') 대신 @include ('parts.menu')를 사용합니다. – hugronaphor

+0

@CornelAndreev : render와 include의 차이점은 무엇입니까? – akhyar

0

view composer에있는 데이터를 가져오고 HTML macro을 사용하여 HTML을 생성하는 방법은 어떻습니까?

Laravel에는 여러 가지 방법이 있습니다. 즉, 이것은 아마도 약간의 혼란 스러울 수 있습니다.

+1

뷰 컴포저에 대한 문서에서 _ "작성자는 일반적으로 application/routes.php에 정의되어 있습니다"_라고되어 있습니다. 논리를위한 라우팅이 아닌 경로를 사용합니다. 경로가없는 솔루션입니까? – Orbitum

+0

그들은 경로와 아무 상관이 없습니다. 원하는 곳 어디에서나 추가 헬퍼 파일에 넣을 수 있습니다. – Franz

+0

좋아,이 로직 (작성자)을 어디에 넣어야합니까? Base_Controller 함수에서? 이것은 나의 주요 질문이다. 나는 Laravel에 많은 유연한 것들이 있다는 것을 이해하지만 어디에 넣어야할지 모른다. – Orbitum

관련 문제