我第一次使用laravel,需要一些帮助来理解路线。我正在设置一个视图,显示客户下达的订单列表。此列表上方是2个搜索框。一个用于按ID搜索,另一个用于选择日期。我想要一个“默认”路线,所以当路线中没有包含id / date时,我们会看到今天到目前为止所有的订单。
路线应如下:
{id}和{date}应该用正则表达式区分。
我可以让任何一条路线自己工作,但是当我尝试为所有3路线创建路线并相应地修改我的控制器时,我会打破其他路线。一个例子是:
Route::get('orders/{id}', 'OrderController@getOrders')->where('id', '[0-9]+');
这适用于通过ID获取订单,但如果我想允许日期,我将不得不完全改变路线。从那时起,我希望能够更进一步,例如路线订单/ 12345 / edit应该将我带到允许我编辑订单的视图。
如何正确设置我的路线/控制器来执行此操作?
答案 0 :(得分:1)
除非您设法编写验证日期或数值的正则表达式,否则您有两个选择:
我更喜欢第一种选择,因为我相信两种路线都相似但却非常不同。
修改强> 如果您想使用相同的表单定位到不同的网址,具体取决于您必须使用javascript的输入内容,您可以使用以下命令更改表单中的操作:
$('#form').attr('action', "the_url");
你必须为输入设置一个监听器才能知道指向哪个url: Detecting input change in jQuery?
我希望这可以帮到你!
答案 1 :(得分:1)
只需制作三条路线,例如laravel documentation
订单路线:
Route::get('orders', 'OrderController@getOrders');
按id路由排序:
Route::get('orders/{id}','OrderController@getOrdersById')->where('id', '[0-9]+');
按数据路线排序:
Route::get('orders/{data}', 'OrderController@getOrdersByData')->where('name', '[A-Za-z]+');
您也可以在OrderController中创建三条路线,例如documentation