Laravel Слишком мало аргументов для работы - PullRequest
1 голос
/ 22 февраля 2020

У меня есть простое приложение для генерации некоторого кода с использованием Laravel, теперь я пытаюсь передать уникальный идентификатор моему контроллеру с помощью URL.

Этот метод должен получить идентификатор:

 public function code($code_id)
 {
     $settings = Setting::find($code_id);

     return view('pages.settings.code', compact('settings'));
 }

И это мой файл просмотра, где я передаю идентификатор:

<a href="{{ route('settings.code', $settings->code_id) }}">
    {{ __('Generate Code') }}
</a>

Когда я проверяю URL, я получаю:

http://127.0.0.1:8001/settings/code?K1zMXRZG4

Вот мой route:

Route::get('settings/code', [
    'as' => 'settings.code', 
    'uses' => 'SettingController@code'
]);

Route::resource('settings', "SettingController");

Но я получаю следующую ошибку:

Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_RECOVERABLE_ERROR)
Too few arguments to function App\Http\Controllers\SettingController::code(), 0 passed and exactly 1 expected

Что не так с моим кодом?

1 Ответ

4 голосов
/ 22 февраля 2020

Вам необходимо определить любые параметры, которые должны быть переданы методу в вашем маршруте:

Route::get('/settings/code/{code_id}', 'MyController@code')
    ->name('settings.code');

Это будет передавать $code_id методу code() в вашем контроллере.

Если вы не определили параметр в своем маршруте, он будет передан как параметр в Request -объекте вместо этого - как и все строки запросов - и вам нужно извлечь его следующим образом в вашем контроллере:

$code_id = $request->query('code_id');
...