在laravel中转义正斜杠

时间:2020-10-15 06:44:40

标签: php laravel routes

我有数十条路线,如下所示

Route::group([
    'where' => ['aNumber' => '.*'],
], function () {
    Route::get('air/{aNumber}/tools', 'AirController@tools');
    Route::post('air/{aNumber}/handled', 'AirController@handled');
    Route::post('air/{aNumber}/notHandled', 'AirController@notHandled');
    Route::get('air/{aNumber}/act', 'AirController@act');
    Route::post('air/{aNumber}/sendAct', 'AirController@sendAct');
    Route::get('air/{aNumber}', 'AirController@show');
});

{anumber}参数可能像这些23-349493/4一样,尽管这种参数会与其他路由产生一些冲突,所以例如,如果我们要调用air/28-23422/sendAct而不是调用@sendAct路线,它将称为@show

因为laravel认为/sendAct是该参数的一部分。好吧,我可以通过在每个路由上添加更多where not(Regex)并定义每个路由应遵循的逻辑来解决此问题,但是您对此问题有更好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

不,您错了,Laravel将选择show,因为air/28-23422/sendAct不会按sendAct ,因为sendAct具有假定的方法{{1} },而不是POST
代替:

GET

尝试写作

Route::post('air/{aNumber}/sendAct', 'AirController@sendAct');

或使用Route::get('air/{aNumber}/sendAct', 'AirController@sendAct'); // ^^^ 作为^[^\/]*组的where子句