在修订工作中-Laravel 5.8-我面临一种奇怪的行为:
app»政策»CustomerPolicy
public function create(User $user )
{
dd($user); // for debugging purposes
}
...
public function update(User $user, Customer $customer)
{
dd($customer); // for debugging purposes
}
...
注册策略app»提供者»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' );