首页 > 解决方案 > 使用带有新的 laravel 路由语法的路由操作

问题描述

我对语法有疑问,但找不到答案。

我在路由文件中有代码:

Route::get(
    '/something/{seoString}/{someMore}',
    ['as' => 'my_name', 'uses' => '\my\namespace\MyController@index', 'my_route_action' => 20]
);

我想用调用控制器的新语法重写它

Route::get(
    '/something/{seoString}/{someMore}',
    [MyController@::class, 'index'] // would like to use this new syntax
);

它工作正常,但如何添加自定义路由操作“my_route_action”?

我知道可以用组包装路线并以这种方式添加:

Route::group(['my_route_action' => 20], static function () {
    Route::get(
        '/something/{seoString}/{someMore}',
        [MyController@::class, 'index'] // would like to use this new syntax
    );
);

但这不是我要找的。我不想为每条路线添加一个组,只是为了添加路线操作。

所以我想问一下它是否确实存在类似的东西,->addCustomAction()或者这应该怎么做?

标签: laravelsyntaxlaravel-8

解决方案


不幸的是,路线行动不是一件事,而且可能不应该是。也不确定您实际上想要实现什么。

如果您像传递一些数据一样传递 GET 数据,您可以通过:{variable}所以 URL 将变为以下内容:

Route::get('my-route-url/{model}/get', [MyController::class, 'methodName')->name('something')->middleware(['something'])

在你的控制器中,如果你也想使用依赖注入请求,以及模型:

public function methodName(Request $request, Model $model)
{
    dd($request->all(), $model);
}

“as”是命名方法。中间件仍然是中间件。

如果您尝试执行 Key/Pair 位数据,则​​需要使用 POST 请求并将其传递到数据中,您可以通过$request->input('keyName')控制器中的方法访问这些数据。


推荐阅读