我有两个资源控制器名为' livre-dor' (英文金书)和菜单,餐馆网站。它们都具有基本的CRUD功能,包括' index'' store','创建','显示','更新& #39;,'编辑'并且'销毁'。只是,我决定在delete方法中添加一个异常,因为我发现我需要为链接创建一个表单这一事实很烦人。
因此,对于两个控制器,我使用" destroy"进行了以下操作:动作:
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$message = Goldenbook::find($id);
$message->delete();
session()->flash('message', 'Message supprimé');
return redirect('livre-dor');
}
这适用于' livre-dor'菜单' litteraly具有Goldenbook::find($id)
除Menu::find($id)
之外的相同行。
在我的路由中,我做了以下内容:
Route::resource('livre-dor', 'GoldenbookController',['except' => ['destroy']]);
Route::get('/destroy/{id}', 'GoldenbookController@destroy')->name('livre-dor.destroy');
Route::resource('menus', 'MenusController', ['except' => ['destroy']]);
Route::get('/destroy/{id}', 'MenusController@destroy')->name('menus.destroy');
在我的观点中,我做了以下几点:
index.blade.php
<tbody>
@foreach($messages as $message)
<tr>
<td>
{{ $message->nom }}
</td>
<td>
{{ $message->message }}
</td>
<td>
<a href="{{route('livre-dor.destroy', $message->id)}}">Supprimer</a>
</td>
</tr>
@endforeach
</tbody>
所以,这样,而不是去livre-dor.destroy&#39;通过删除,我们通过GET这是简单的waaaay(不要担心这将在以后保护)。当我第一次完成所有事情时,一切都有效,直到两天后我重新开始工作。
然而,现在,当我到达&lt; livre-dor&#39;索引,我得到以下内容:Route [livre-dor.destroy] not defined. (View: D:\PHPStormProject\nekoba\resources\views\livre-dor\index.blade.php)
,而&#39;菜单&#39;顺利出现。当我运行php artisan route:list
时,我无法找到&lvre-dor.destroy&#39;任何地方:
另外,当我做php artisan route:cache
时,它会破坏menus.destroy路线并添加我的路线。我无法找到这一切背后的逻辑。
提前感谢您,询问您是否需要查看其他内容
答案 0 :(得分:1)
尝试在资源路由之前编写自定义销毁路由,希望它能够正常工作。
答案 1 :(得分:1)
Route::get('/destroy/{id}', 'GoldenbookController@destroy')->name('livre-dor.destroy');
Route::get('/destroy/{id}', 'MenusController@destroy')->name('menus.destroy');
您无法为2种不同的路由方法使用相同的URI。让它们有不同的名称,例如
Route::get('/livre-dor/destroy/{id}', 'GoldenbookController@destroy')->name('livre-dor.destroy');
Route::get('/menus/destroy/{id}', 'MenusController@destroy')->name('menus.destroy');