2013-05-30 38 views
6

Tôi đang trong quá trình làm việc theo cách của mình thông qua một vài hướng dẫn cho Laravel 4 và tôi đã chạy vào một lỗi mà tôi không thể hiểu hoặc hiểu tại sao nó đang chạy không chính xác.Thiếu đối số để đóng bằng tham số tùy chọn

Điều tôi đang cố gắng tạo một tuyến đường xem URL và sau đó hoạt động dựa trên điều đó một cách hợp lý. Đây là mã hiện tại của tôi:

Route::get('/books/{genre?}', function($genre) 
{ 
    if ($genre == null) return 'Books index.'; 
    return "Books in the {$genre} category."; 
}); 

Vì vậy, nếu URL là http://localhost/books, trang phải trả về "Chỉ mục sách". Nếu URL đọc http://localhost/books/mystery, trang sẽ trả về "Sách thuộc danh mục bí ẩn".

Tuy nhiên tôi đang nhận được lỗi 'Đối số thiếu 1 cho {closure}()'. Tôi thậm chí còn nhắc đến tài liệu Laravel và chúng có các tham số của chúng được định dạng chính xác theo cùng một cách. Bất kỳ trợ giúp sẽ được đánh giá cao.

Trả lời

9

Nếu thể loại là không bắt buộc, bạn phải xác định một giá trị mặc định:

Route::get('/books/{genre?}', function($genre = "Scifi") 
{ 
    if ($genre == null) return 'Books index.'; 
    return "Books in the {$genre} category."; 
}); 
+0

Cảm ơn bạn đã trả lời nhanh như vậy. Làm việc như một say mê. – Triccum

+1

Bạn cũng có thể cung cấp 'mặc định' cho tuyến đường, vì vậy' Route :: get ('books/{genre?}', Hàm ($ genre) {return $ genre;}) -> mặc định ('thể loại', ' bí ẩn ');' –

+0

nguyên nhân sai nếu thể loại là không, thể loại sẽ có giá trị "Scifi" thành hàm cuối cùng. bạn có thể nhận ra rằng "Chỉ mục sách" sẽ không bao giờ được hiển thị –

1

Thể loại là không bắt buộc, bạn phải xác định một giá trị mặc định để $genre. $genre=null để khớp với "Chỉ mục sách" mã của bạn.

Route::get('books/{genre?}', function($genre=null) 
{ 
    if (is_null($genre)) 
     return "Books index"; 


return "Books in the {$genre} category"; 
}); 
Các vấn đề liên quan