2015-06-30 39 views
13

trong Config/app.php trong nguồn laravel, việc sử dụng thực tế của url là gì?Ý nghĩa của URL ứng dụng trong laravel 5

Nó cho biết URL ứng dụng sẽ được sử dụng bởi artisan command line tool, vì vậy nó nên thực sự là gì?

Tôi có nghĩa là nó nên http://mydomainname.com hoặc nó phải được /var/www/laravel/ hoặc /var/www/laravel/public

Cấu hình hiện tại

/* 
|-------------------------------------------------------------------------- 
| Application URL 
|-------------------------------------------------------------------------- 
| 
| This URL is used by the console to properly generate URLs when using 
| the Artisan command line tool. You should set this to the root of 
| your application so that it is used when running Artisan tasks. 
| 
*/ 

'url' => 'http://localhost/', 

Cung cấp nguồn ứng dụng của tôi tọa lạc tại /var/www/ thư mục và thư mục công cộng laravel là /var/www/laravel/publichttp://mydomainname.com là chỉ để giải quyết tại /var/www/laravel/public thư mục

trường hợp sử dụng:

tôi sẽ sử dụng laravel schedular từ /app/Console/Kernel.php sẽ được cử periodic sendMail commands và đó sẽ lần lượt xếp hàng lên mail được gửi đi trong cơ sở dữ liệu và queue listner hơn sẽ xử lý hàng đợi như bình thường

Queues là mỹ tại localhost (server xamp địa phương của tôi) làm việc tuy nhiên tôi lo ngại như những gì nên được giá trị trong sản xuất url

+0

Nếu 'url' hiện tại được đặt thành localhost thì hãy sử dụng tên miền – Bankzilla

Trả lời

27

Khi người dùng truy cập trang web của bạn, Laravel nhận được rất nhiều thông tin cần thiết về yêu cầu từ siêu dữ liệu của PHP ($ _SERVER, $ _GET, $ _POST, v.v.). Một phần của thông tin này là URL yêu cầu.

Ví dụ, nếu bạn truy cập vào các phương pháp yêu cầu url() hoặc path(), thông tin này được lấy thông qua $ _SERVER superglobal:

$url = Request::url(); 
$path = Request::path(); 

Tuy nhiên, nghệ nhân, các lệnh, việc làm, vv không có lợi ích của thông tin này. Nó không phải là một yêu cầu HTTP bình thường đến từ người dùng, nó là một lệnh PHP đang được chạy từ dòng lệnh. Bởi vì điều này, Laravel cần một cách để xác định url của ứng dụng nên là gì. Đây là nơi giá trị cấu hình xuất hiện.

Trong ví dụ của bạn, bạn có kế hoạch gửi email từ hàng đợi. Hãy tưởng tượng bạn cần phải bao gồm một liên kết đến một tuyến đường của trang web của bạn trong một trong các email, vì vậy bạn sử dụng UrlGenerator để có được url cho liên kết (URL::route('route.name')). Vì mã này đang được chạy bên trong một lệnh và không liên quan đến bất kỳ loại yêu cầu HTTP nào, url ứng dụng cơ sở sẽ được chọn từ giá trị cấu hình mà bạn đặt trong config/app.php.

Như hy vọng sẽ rõ ràng hơn một chút, giá trị url phải được đặt thành url http cho ứng dụng của bạn, không phải bất kỳ loại đường dẫn thư mục nào. Trong ví dụ của bạn, nó phải là http://mydomainname.com.

+2

Đó là câu trả lời hay nhất và đủ mô tả để hiểu. Cảm ơn bạn :-) – echoashu

+1

Tôi đã tìm kiếm thông tin về tham số cấu hình Laravel, câu trả lời này là hoàn hảo. Cảm ơn. –

+1

Tất cả bây giờ đều có ý nghĩa. Cảm ơn bạn! – Staysee

5

khi vào sản xuất, nó phải được thiết lập để

'url' => 'http://your-live-domain.com', 

Như bạn đã đề cập, nó sẽ được sử dụng bởi các lệnh và hàng đợi thủ công.

Bạn có thể tận dụng .env để lưu trữ miền trực tiếp của mình. http://laravel.com/docs/5.1#environment-configuration

+0

như ý tưởng .env, ứng dụng sẽ tự động nhận url sản xuất vì tôi không thể tìm biến ENV đang được sử dụng trong config/app.php? Dù sao url đó hoạt động :-) – echoashu

+2

@echoashu Với ý tưởng '.env', bạn sẽ đặt giá trị trong cấu hình của mình như sau:' 'url' => env ('URL', 'http: // localhost/'), '. Bây giờ, nếu bạn cung cấp giá trị 'URL' trong tệp' .env', giá trị cấu hình 'url' sẽ được đặt thành giá trị đó. Nếu bạn không cung cấp giá trị 'URL' trong tệp' .env', giá trị cấu hình ''url'' sẽ được đặt thành giá trị mặc định được chuyển cho hàm' env() '(trong trường hợp này là' 'http : // localhost/''). – patricus

+0

hoàn hảo !! Tôi thấy logic tương tự trong database.php và các tập tin cấu hình khác quá và nghĩ như vậy. Điều đó nói rằng, chúng ta có thể lưu trữ nhiều hằng số tĩnh quan trọng trong tệp .env và truy cập chúng bằng hàm 'env()'? Sửa chữa cho tôi nếu sai – echoashu