[英]route not defined in laravel 8 resource
我想將 function 添加到我的資源 controller。 我讀過一些文章說我們必須將路線線放在資源線之前,這就是我所做的。 但我仍然得到和錯誤說路線未定義。
Route::name('panel.')->prefix('panel')->middleware('auth')->group(function () {
Route::get('/dashboard', [DashboardController::class, 'index'])->name("dashboard");
Route::resource('contact', ContactController::class)->only([
'index', 'show', 'destroy'
]);
Route::post('/portfolio' , [PortfolioController::class, 'visibility']);
Route::resource('portfolio', PortfolioController::class)->except([
'show'
]);
Route::resource('customer', CustomerController::class)->except([
'show'
]);
Route::resource('advice', AdviceController::class)->only([
'index', 'destroy'
]);
Route::resource('invoice', InvoiceController::class)->only([
'index', 'destroy', 'create', 'store',
]);
Route::resource('email', EmailTemplateController::class)->only([
'index', 'destroy', 'create', 'store',
]);
Route::resource('profile', ProfileController::class)->only([
'update', 'index', 'destroy'
/*
* index
* destroy
*/
]);
Route::get('/me', [ProfileController::class, 'show'])->name("profile.show");
});
這是我的 web.php 路線的名稱應該是 panel.portfolio.visibility。 還有一件事我沒有為這個項目編寫代碼,我只是向它添加了一些功能。 所以新的 function 是我的,但不是資源 controller。
public function visibility(Request $request,$portfolio_id)
{
$portfolio= Portfolio::find($portfolio_id);
if($portfolio instanceof Portfolio){
$this->validate($request,[],[]);
$indicator = ($request->input('custom-switch-checkbox') == 'on') ? 1 : 0;
$newData= ['portfolio_visibility' => $indicator];
$portfolio->update($newData);
return redirect()->back()->with('success', 'با موفقیت به روز رسانی گردید.');
}
}
這是我的知名度 function。 此頁面顯示投資組合列表,並且有一列有一個開關,指示是否應顯示投資組合。 我可以很好地創建投資組合,但我無法進入列表頁面,這里是索引頁面。
<td> <.--dokme baraye namayesh --> <form action="{{ route('panel.portfolio,visibility'? $portfolio->portfolio_id ) }}" role="form" method="post"> <label class="custom-switch mt-2" > <input type="checkbox" name="custom-switch-checkbox" class="custom-switch-input" id="personal-data-button" {{($portfolio->portfolio_visibility== 0): ''. 'checked'}} onclick="{{ route("panel.portfolio,visibility" , $portfolio->portfolio_id ) }}"> <span class="custom-switch-indicator"></span> </label> </form> </td>
這是在 index.blade.php 我不知道為什么有問題。 我對 laravel 也很陌生,所以如果我的問題令人困惑或聽起來很愚蠢,請善待。
當您使用 Route::resource 時,它會為您使用默認命名約定。 如果您使用 Route::post ,則必須像在儀表板路由中那樣指定名稱。
因此,以這種方式更改路線應該可行:
Route::post('/portfolio' , [PortfolioController::class, 'visibility'])->name('portfolio.visibility');
至於我,我注釋掉了發生錯誤的代碼。 我刪除了這些,一切都很好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.