2014-09-26 26 views
7

Trong laravel, không có tệp liên tục nào được xác định, vì vậy tôi đã tiếp tục và tìm kiếm một cách để thực hiện việc sử dụng các hằng số. Phương pháp dưới đây là những gì tôi quản lý để đặt lại với nhau:Xác định hằng số trong laravel

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

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

Bây giờ, câu hỏi của tôi là; là có một cách sạch hơn để lấy các hằng số của tôi trong quan điểm của tôi? Một cái gì đó như:

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

Điều này nhằm giữ cho tầm nhìn của tôi đẹp, ngắn gọn và sạch sẽ.

Đánh giá cao đầu vào!

Trả lời

8

Một điều bạn có thể làm là share pieces of data across quan điểm của bạn:

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

Đặt rằng ở phía trên cùng của routes.php của bạn và sau đó là liên tục sẽ có thể truy cập vào tất cả các quan điểm lưỡi của bạn như:

{{ $my_constant }} 
+1

Hà! Không chắc tại sao tôi không nghĩ về điều này chút nào, đặc biệt là vì tôi quen thuộc với chức năng chia sẻ của Laravel! – Marfat

4

Lớp Config nhằm thay thế nhu cầu về các hằng số và phục vụ cùng một vai trò.

app/config/constants.php trả về một loạt các cặp khóa/giá trị, sau đó chỉ cần sử dụng Config::get('constants.key') để truy cập chúng.

Bạn hình dung có thể tạo ra một lớp Constant mà có một chức năng get như một phím tắt:

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

nhưng sử dụng xử lý Laravel tiêu chuẩn có thể sẽ đẹp hơn để các nhà phát triển Laravel khác cố gắng làm quen với mã của bạn.

1

Trong v5 bạn có thể làm như @msturdy gợi ý ngoại trừ bạn lưu trữ hằng số trong tệp .env hoặc trong sản xuất dưới dạng biến $ _ENVIRONMENT thực tế trên máy chủ của bạn cho môi trường của bạn.

Ví dụ .env nhập:

CONSTANT=value 

Sau đó gọi như vậy:

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

Sau đó tải nó với:

{{ bladeConstant }} 
+1

.env không được khuyến cáo sử dụng trong môi trường sản xuất (https://github.com/vlucas/phpdotenv#usage-notes), nó có thể hoạt động không thể đoán trước (và vì lý do đó tôi muốn nói thậm chí không hữu ích trong phát triển !). – toby1kenobi

+0

Đúng, tuy nhiên các biến môi trường cũng có thể được đặt trên máy chủ của bạn thay vì sử dụng tệp .env. và phần còn lại vẫn giữ nguyên. Tôi đã cập nhật câu trả lời của mình để phản ánh điều này tốt hơn. –

Các vấn đề liên quan