2015-06-19 23 views
5

Trong laravel, một url nhất định được định tuyến đến một phương thức điều khiển cụ thể. Bên trong phương thức đó, tôi muốn trả lời phản hồi như thể người dùng đã truy cập một tuyến đường khác. Tôi có thể làm điều này như sau:Làm cách nào để định tuyến lại cuộc gọi laravel nội bộ (không có chuyển hướng)?

return App::make('OtherController')->otherMethod(); 

Tuy nhiên, mà phụ thuộc vào hardcoding tôi tên lớp và phương pháp tôi muốn gửi chúng đến. Tôi muốn, để gửi chúng đến một bộ điều khiển khác được xác định bởi tên của tuyến đường, chứ không phải là tên của lớp bộ điều khiển. Làm thế nào tôi có thể làm điều đó?

Một khả năng là return Redirect::route($otherRoute), ngoại trừ a) đây là chuyển hướng thực, có nghĩa là nó thêm thời gian tải trang và thay thế url mà họ thấy và b) chuyển dữ liệu POST khó khăn. Vì vậy, tôi không muốn làm điều đó.

Làm cách nào để gọi cho bộ điều khiển, chỉ biết tên của tuyến đường được liên kết?

+0

trong laravel 5 sử dụng $ request = Yêu cầu :: tạo ('/ nội/vị trí', 'GET'); $ response = Route :: dispatch ($ request); – Mruf

+0

Điều này làm việc tốt trong Laravel 4 quá. Tuyến đường :: nhận ('sự kiện', ['như' => 'sự kiện', chức năng() { \t \t $ request = Yêu cầu :: tạo (URL :: toSite ('lp/events'), 'GET '); \t \t return Route :: dispatch ($ request); \t}]); –

Trả lời

0

Như @Mruf nói, bạn có thể thử:

return \Route::dispatch(\Request::create($otherRoute, 'GET')); 
+0

Khi tôi sử dụng điều này trên một trạm y tế từ xa, lỗi lộ trình không tìm thấy xuất hiện. Nếu tôi dd ($ otherroute), tuyến đường chính xác sẽ được hiển thị. Khi tôi sao chép-dán các tuyến đường đổ trong trình duyệt trên máy chủ nó hoạt động. Bất kỳ đề xuất? – davejal

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