2013-02-14 27 views
5

Tôi đang cố gắng chụp một ký tự đại diện từ URL và sau đó trước tiên chuyển nó vào bộ lọc rồi chuyển đến bộ điều khiển. Tôi không chắc chắn làm thế nào để vẽ câu hỏi chính xác nhưng đây là những gì tôi đã cố gắng cho đến nay.90 Laravel, Định tuyến Ký tự đại diện để lọc và sau đó điều khiển

Route::get('test/(:any?)', array('as' => 'testroute', 'uses' => '[email protected]', 'before' => "test_filter:$1")); 

Route::filter('test_filter', function($id = NULL) 
{ 
    if($id) 
    echo "This id is " . $id; // Prints "This id is $1" 
}); 

Route::get('test/(:any?)', array('as' => 'testroute', function($id = NULL) 
{ 
    if($id) 
     echo "this id is " . $id; // Does not do anything 
}, 'uses' => '[email protected]')); 

Về cơ bản, tôi muốn kiểm tra nếu có một id nối vào URL và thiết lập một cookie nếu có. Nhưng bất kể trường hợp, tôi muốn tuyến đường này được xử lý bởi một bộ điều khiển không có vấn đề nếu có bất kỳ id nối hay không.

Tôi phải làm điều tương tự với rất nhiều tuyến đường vì vậy tôi muốn một cái gì đó giống như một bộ lọc hơn là sửa đổi mã của bộ điều khiển.

Tôi biết rằng tôi có thể trực tiếp chuyển phần tử ký tự đại diện đến đóng hoặc tôi có thể cấp dữ liệu này làm thông số cho bất kỳ bộ điều khiển nào nhưng trong trường hợp đó, tôi sẽ phải sửa đổi mã điều khiển. chốc lát.

Tôi có thể làm điều đó thông qua bộ lọc không? hoặc bất kỳ cách nào khác mà tôi sẽ không phải sửa đổi mã điều khiển?

Trả lời

0

Hãy thử qua một quyền ẩn danh sau trước khi

Route::get('test/(:any?)', 
    array(
     'as' => 'testroute', 
     'uses' => '[email protected]', 
     'before' => "test_filter", 
     function($my_cookie_value) 
     { 
      // Set cookie here 
     } 
    ) 
); 

Taken từ here

+0

@Gufran tôi đã cập nhật mã của mình – afarazit

+0

Không, chức năng ẩn danh không làm bất cứ điều gì. Nó chỉ áp dụng bộ lọc và sau đó chuyển tiếp tuyến đường đến bộ điều khiển. Ngoài ra, tôi cần phải lấy giá trị của ký tự đại diện bên trong bộ lọc hoặc đóng cửa ẩn danh. – Gufran

+0

@Gufran đã cập nhật mã một lần nữa, chuyển kết quả trùng khớp với hàm anon, xem nếu đó là hoạt động – afarazit

0

Tôi muốn sử dụng một middleware http://laravel.com/docs/5.1/middleware (hoặc bộ lọc cho các phiên bản Laravel cũ) và thêm các tuyến đường/s vào một nhóm trong đó có phần mềm trung gian như bạn có thể thấy ở đây http://laravel.com/docs/5.1/routing#route-group-middleware.

Phần mềm trung gian sẽ được thực thi trước mã tuyến, nơi bạn có thể thêm logic để quản lý cookie của mình.

+0

Cảm ơn. Rất nhiều đánh giá cao nhưng câu hỏi này là 2,5 tuổi. Nó thường hiển thị ngày đăng bài theo câu hỏi vì vậy hãy thử kiểm tra ngày tiếp theo. – Gufran

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