簡體   English   中英

laravel 8 資源中未定義路由

[英]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');

文檔: https://laravel.com/docs/8.x/routing#named-routes

至於我,我注釋掉了發生錯誤的代碼。 我刪除了這些,一切都很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM