繁体   English   中英

route() 助手 function 不适用于 laravel 中的资源 controller,但 url() 可以工作。 正常吗?

[英]route() helper function does not work with resource controller in laravel, but url() do work. Is it normal?

我有一个标准资源 controller 像这样注册:

Route::resource('/movies', \App\Http\Controllers\MovieController::class );

我检查了 php artisan route:list 并且我有获取“电影”路线。

但是在刀片模板中

<a href="{{ route('movies') }}" class="hover:text-gray-300">Movies</a>

不再工作了。

而且只有

<a href="{{ url('movies') }}" class="hover:text-gray-300">Movies</a>

作品。

在此之前,当我有:

Route::get('/movies', function () {
    return view('movies');
})->name('movies');

路线方法有效。

所以 url() 方法在任何地方都有效,而 route() 仅在特定情况下有效。

谁能告诉我这两种方法的主要区别是什么?

什么时候应该使用哪一个?

主要问题 - route() 方法不适用于资源 controller 是否可以,还是我的代码有问题?

既然 url() 无处不在,我应该忘记 route() 方法不可靠吗?

如果您查看php artisan route:list的结果,您将看到几条路线,例如

|        | POST      | movies                     | movies.store        | App\Http\Controllers\MovieController@store        | web        |
|        | GET|HEAD  | movies                     | movies.index        | App\Http\Controllers\MovieController@index        | web        |
|        | DELETE    | movies/{movie}            | movies.destroy      | App\Http\Controllers\MovieController@destroy      | web        |
|        | PUT|PATCH | movies/{movie}            | movies.update       | App\Http\Controllers\MovieController@update       |

route() 和 url() 接受不同的值。
route() 将接受路由名称,例如 movies.index、movies.destroy、movies.update 和
url() 将接受电影、电影/23。

route() 将为您提供 select 正确的方法(GET、POST、PATCH、DELETE),但是
url() 只会提供路径。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM