2014-09-26 2 views
7

laravel에는 상수 파일이 정의되어 있지 않으므로 상수를 구현하는 방법을 찾아 보았습니다. 아래의 방법은 내가 함께 관리 할 수 ​​있습니다 :laravel의 상수 정의

// app/config/constants.php 
return['CONSTANT_NAME' => 'value']; 

// index.blade.php 
{{ Config::get('constants.CONSTANT_NAME') }} 

지금, 내 질문은; 내보기에서 내 상수를 검색하는 더 깨끗한 방법이 있습니까? 예 :

{{ Constant::get('CONSTANT_NAME') }} 

이것은 내 견해를 짧고 깨끗하게 유지하기위한 것입니다.

입력을 감사하십시오!

답변

8

것은 귀하의 의견을 share pieces of data across하는 것입니다

View::share('my_constant', Config::get('constants.CONSTANT_NAME')); 

routes.php의 상단에 있음을 넣고 일정은 모든 블레이드 뷰에서 액세스 할 수 있습니다 :

{{ $my_constant }} 
+1

하! 내가 Larvel의 공유 기능에 익숙하기 때문에 특히 내가 왜 이런 생각을하지 않았는지 확신 할 수 없습니다! – Marfat

4

Config 클래스는 상수의 필요성을 대체하기위한 것이며 동일한 역할을 수행합니다.

app/config/constants.php이 키/값 쌍의 배열을 반환하면 Config::get('constants.key')을 사용하여 액세스 할 수 있습니다.

당신은 생각할 수있는 바로 가기로 get 기능을 가진 Constant 클래스를 만들 수 있습니다

class Constant { 
    public function get($key) { 
    return Config::get('constants.' . $key); 
    } 
} 

을하지만, 표준 Laravel 처리를 사용하는 코드에 익숙해하려고 다른 Laravel 개발자들에게 더 좋은 될 가능성이 높습니다. 당신이 할 수있는

1

v5에서는 @msturdy가 사용자 환경에 맞게 서버에서 실제 $ _ENVIRONMENT 변수로 .env 파일 또는 프로덕션에 상수를 저장한다는 점을 제외하면 제안 할 수 있습니다.

예 .env의 항목 :

CONSTANT=value 

는 다음과 같이 전화 :

View::share('bladeConstant', env('CONSTANT')); 

그런 다음 그것을로드 :

{{ bladeConstant }} 
+1

.env는 프로덕션 환경 (https://github.com/vlucas/phpdotenv#usage-notes)에서 사용하지 않는 것이 좋습니다. 예기치 않게 작동 할 수 있습니다. (그런 이유로 개발에 도움이되지 않는다고 말하고 싶습니다. !). – toby1kenobi

+0

그렇지만 .env 파일을 사용하는 대신 서버에서 환경 변수를 설정할 수도 있습니다. 나머지는 동일하게 유지됩니다. 이 답변을 반영하여 답변을 업데이트했습니다. –