2014-03-27 3 views
2

전역 변수를 별도의 파일로 정의한 다음 원하는 위치에 삽입 할 수 있기를 바랍니다. Laravel 4 + Blade의 경우이 작업을 수행했습니다.Laravel Blade 템플릿의 전역 변수

최고 파일 example.blade.php :

@include('head')  
@include('body') 

head.blade.php

$STYLE_PATH_CSS="styleFolder/foundation/css" 
$STYLE_PATH_JS="styleFolder/foundation/js" 
$STYLE_PATH_JS_VENDOR="styleFolder/foundation/js/vendor" 
<link rel="stylesheet" href=" <?php echo $STYLE_PATH_CSS ?>/normalize.css "> 
<link rel="stylesheet" href=" <?php echo $STYLE_PATH_CSS ?>/foundation.css "> 
<link rel="stylesheet" href=" <?php echo $STYLE_PATH_JS_VENDOR ?>/modernizr.js "> 

body.blade.php

<script src="styleFolder/foundation/js/vendor/jquery.js"></script> 
<script src="styleFolder/foundation/js/foundation.min.js"></script> 

그때까지, 그것은 잘 작동합니다. 그런 다음 중복 된 경로를 전역 변수로 바꾸어 한 번 더 단순화하기를 바랍니다. 그래서,

variables_G.blade.php

<?php $STYLE_PATH_CSS="styleFolder/foundation/css" ?> 
<?php $STYLE_PATH_JS="styleFolder/foundation/js" ?> 
<?php $STYLE_PATH_JS_VENDOR="styleFolder/foundation/js/vendor" ?> 

새로운 head.blade.php는

@include('variables_G.blade.php') 
<link rel="stylesheet" href=" <?php echo $STYLE_PATH_CSS ?>/normalize.css "> 
<link rel="stylesheet" href=" <?php echo $STYLE_PATH_CSS ?>/foundation.css "> 
<link rel="stylesheet" href=" <?php echo $STYLE_PATH_JS_VENDOR ?>/modernizr.js "> 

다음 변수 '값을 찾을 수 없습니다. 오류 메시지 :

Undefined variable: STYLE_PATH_CSS. 

나를 도와 줄 수있는 사람이 있습니까?

+0

가장 좋은 방법은 ... 당신의 컨트롤러에 변수를 정의하고 뷰에 전달하는 것 –

+0

그냥 앱 코드를 상상해보십시오. 실제로 Laravel과 함께 수백 가지 솔루션이 있습니다. –

답변

6

보기가 바보 같아야한다는 것을 의미합니다. 즉, 하나의 변수를 다른 것에 부여하면 안되기 때문에 뷰에 너무 많은 위치를 부여해서는 안됩니다.

보기 블레이드 그들은 언제든지 사용할 수 있는지 확인하기 위해 전역 변수를 제공하는 가장 좋은 방법은 View::share()을 사용하고 있습니다 :

View::share('STYLE_PATH_CSS', 'styleFolder/foundation/css'); 
View::share('STYLE_PATH_JS', 'styleFolder/foundation/js'); 
View::share('STYLE_PATH_JS_VENDOR', 'styleFolder/foundation/js/vendor'); 

당신은 composers.php 파일이 추가로로드 할 수 있습니다 app/start/global.php :

require app_path().'/composers.php'; 

이 문서를 살펴 보자 http://laravel.com/docs/responses#views

+0

완벽하게 작동합니다. 부끄러움 때문에 공식 문서를 더 잘 사용해야한다고 생각합니다. 감사!! –

+0

+1을 별도의 파일에 포함하는 방법을 설명합니다. – ryanwinchester

6

View::share();은 최고입니다 글로벌 변수를 만드는 방법.

View::share('name', 'Steve'); 

, 나는 특정 뷰를 렌더링 할 때 View Composers

당신은 물건을 포함 할 수처럼 특정 변수가 특정 뷰가 렌더링 될 때마다 포함되어 있는지 확인합니다. 마스터 레이아웃에서 사용하여 을 거의으로 만들 수 있다고 가정합니다. 그것은 더 많은 통제력을 제공합니다. 폭넓게 이용할 수있는 것이 필요하다면 좋겠지 만, 민감하고 모든 곳에서 원하지 않는다면. 그냥 미래에 당신을 위해 문제가 발생합니다 앱이 더 복잡 만들기 ... 간단하고 기존의 을 유지

View::composer('profile', function($view) 
{ 
    $view->with('count', User::count()); 
});