laravel-5 - Laravel - 某些路线中的模型策略不起作用
问题描述
在修订工作中 - Laravel 5.8 - 我面临着一个奇怪的行为:
应用 » 政策 » 客户政策
public function create(User $user )
{
dd($user); // for debugging purposes
}
...
public function update(User $user, Customer $customer)
{
dd($customer); // for debugging purposes
}
...
注册策略
应用 » 提供者 » AuthServiceProvider
protected $policies = [
Customer::class => CustomerPolicy::class,
// TRIED ALSO: 'App\Customer' => 'App\Policies\CustomerPolicy',
];
路线 » 网络
Route::get( 'customers/create', 'CustomerController@create')->name( 'customers.create' )->middleware( 'can:create,customer' );
...
Route::get( 'customers/{customer}/edit', 'CustomerController@edit' )->name( 'customers.edit' )->middleware( 'can:update,customer' );
Route::patch( 'customers/{customer}', 'CustomerController@update')->name( 'customers.update' )->middleware( 'can:update,customer' );
奇怪的是:上面的第一条路线 - 'customers/create' - 不起作用,试图访问页面得到 403 / 禁止代码。但其他两个 - 'customers.edit'、'customers.update' - 工作正常!!?!。
解决方案
我让它工作了,但我仍然想知道为什么不使用简化的类名。
Route::get( 'customers/create', 'CustomerController@create')->name( 'customers.create' )->middleware( 'can:create,App\Customer' );
推荐阅读
- css - 如果浏览器不支持某种文件类型,有没有办法在 CSS 中创建后备图像?
- pandas - 在熊猫数据框中按字符值保留分组
- git - 关于 Git 工作分支是从 dev 合并的,一些文件/代码在合并后被删除/擦除
- html - 除非我刷新页面,否则字体无法正确加载
- reactjs - 试图弄清楚将其从组件转换为 ReactJS 中的函数,但我被卡住了
- typescript - 通过打字稿声明全局类型是行不通的
- windows - 为什么 OSX 和 Windows 导入我的 .pfx 文件的方式不同?
- css - 浏览器更改 H 标签中的字体粗细
- python - 如何将两个字典合并为一个
- sql - 在多对多 SQL 表上精确匹配的 Where 语句