亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel route() 函數未將正確的類型傳遞給控制器

Laravel route() 函數未將正確的類型傳遞給控制器

PHP
月關寶盒 2023-11-03 15:50:33
刀片代碼:<td><a href="{{ route('employee.show', ['lang' => app()->getLocale(), 'employee' => $employee->id]) }}">{{ $employee->first_name }} {{ $employee->last_name }}</a></td>                                <td><a href="{{ route('employee.update', ['lang' => app()->getLocale(), 'employee' => $employee->id]) }}" class="btn btn-primary">{{ __('app-text.indexEdit') }}</a></td>                                <td><form action="{{ route('employee.delete', ['lang' => app()->getLocale(), 'employee' => $employee->id]) }}" method="post">控制器功能:public function edit(Employee $employee){    $companies = Company::get();    return view('employee.edit', compact('employee', 'companies'));}錯誤:TypeErrorArgument 1 passed to App\Http\Controllers\EmployeesController::edit() must be an instance of App\Employee, string givenhttp://localhost:8000/fr/employee/edit/1路線:Route::group(['prefix' => '{lang}'], function() {    Route::prefix('employee')->name('employee.')->group(function() {                Route::get('/edit/{employee}', 'EmployeesController@edit')->name('edit');        Route::patch('/edit/{employee}', 'EmployeesController@update')->name('update');我正在嘗試使應用程序成為多語言應用程序,因此在添加 lang 變量后,路由將不會傳遞 $employee->id 變量。我應該為 lang 變量添加一個可傳遞給控制器的變量嗎?有什么解決辦法嗎?非常感謝。
查看完整描述

4 回答

?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

首先你可以制定一條改變語言的路線


Route:: get('lang/{lang}', function ($locale) {

    session(['locale' => $locale]);

    return \Redirect::back();

})

第2步:中間件


public function handle($request, Closure $next)

    {

        App::setLocale(session('locale'));

        return $next($request);

    }

可以建群后


Route::group(['middleware' => 'language'],function(){

    //routes with u want change language

    Route::get('/edit/{employee}', 'EmployeesController@edit')->name('edit');

    Route::patch('/edit/{employee}', 'EmployeesController@update')->name('update');

});

并且您忘記在每條路線中發送語言


查看完整回答
反對 回復 2023-11-03
?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

如果您也在路線中經過,locale那么應該如下所示:


網頁.php


Route::get('your-Own-route/{lang}/{employee}','YourController@edit');

控制器編輯方法


public function edit($lang,Employee $employee)

{

    $companies = Company::get();

    return view('employee.edit', compact('employee', 'companies'));

}


查看完整回答
反對 回復 2023-11-03
?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

我認為你必須像這樣修改你的路線


在 web.php 中


Route::get('your-route/{lang}/{id}','YourController@edit');

在你的控制器中


public function edit($lang,Employee $employee)

{

    $companies = Company::get();

    return view('employee.edit', compact('employee', 'companies'));

}


查看完整回答
反對 回復 2023-11-03
?
慕后森

TA貢獻1802條經驗 獲得超5個贊

你的參數不對。正如堆棧跟蹤所示,控制器方法需要Employee模型的實例,但您正在傳遞一個字符串


改變


public function edit(Employee $employee)


public function edit(Request $request, $employeeId) // you can remove $request if you dont intend to perform redirects

所以最后你的代碼看起來像


public function edit(Request $request, $employeeId)

{

  $employee = Employee::find($employeeId);

  $companies = Company::all(); // use all instead of get if you arent going to perform selections.

  return view('employee.edit', compact('employee', 'companies'));

}

$employeeId注:您可能需要處理根據提供的信息找不到員工的情況


查看完整回答
反對 回復 2023-11-03
  • 4 回答
  • 0 關注
  • 242 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號