我有一个拉拉维尔网站的用例,我正在努力使一些静态路线坐在完全相同的水平上,主要的外卡路线。
例:
路由: /store/cart 静态路由
路由:/存储/签出静态路由
路由: /store/* 动态路由
路由: /store// 动态路由
路线: /* 动态路线
一直在努力研究如何在Laravel中实现这种路由结构,虽然静态路由规则可以很好地工作,但当我添加了外卡路由时,我就会选择外卡路由,试图捕获静态路由。
我如何能够添加路由规则来支持这一点?
发布于 2018-09-15 06:54:07
将冲突路径更改为非冲突路径。
Route: /store/cart Static Route => this is ok
Route: /store/checkout Static Route => this is ok
Route: /store/* Dynamic Route => /store/id/{id}
Route: /store// Dynamic Route => /store
Route: /* Dynamic Route => remove this and be specific by having more routes for the needs发布于 2018-09-15 08:15:14
美国全局约束
Route::pattern('all','.*');然后按照顺序定义你的路线
Route::('store/cart', function () {});
Route::('store/checkout', function () {});
Route::('store', function () {});
Route::('store/{all}', function ($all) {});
Route::('{all}', function ($all) {});发布于 2018-09-15 10:07:20
设法让它发挥作用。
第一步是使用全局约束路由模式per @Aboalnaga.
Route::pattern('variableName','.*');每个变量都使用此路由模式定义,以使其成为一个通配符模式。
下一步是确保路由排序。看起来,当处理路由时,Laravel将按顺序通过路由列表。一旦找到第一条匹配的路线,它就会停在那里运行这条路线。因此,为了以domain.com/store/cat-1/product的形式处理路由链,其中请求可以是domain.com、domain.com/store、domain.com/store/cat-1、domain.com/store/cat-1/product或domain.com/some-content-page-from-database,需要将路由定义为.
Route::get('/store/shopping-cart', 'onlineStore@showCart');
Route::get('/store/checkout', 'onlineStore@showCheckout');
Route::get('/store/checkout/payment', 'onlineStore@showPayment');
Route::get('/store/checkout/success', 'onlineStore@showPaymentSuccess');
Route::get('/store/checkout/error', 'onlineStore@showPaymentError');
Route::get('/store/{category}', 'onlineStore@showCategory');
Route::get('/store/{category}/{product}', 'onlineStore@showProductDetails');
Route::get('{article}', 'articles@showArticle');通过按顺序定义路由并将变量路由定义为该级别的最后一条路由,只有在前面的路由不匹配时才会触发变量路由。
https://stackoverflow.com/questions/52342171
复制相似问题