Слишком мало аргументов для функции directory :: store (), 1 передано и ожидается ровно 2 - PullRequest
0 голосов
/ 03 сентября 2018

Привет, я делаю контроллер для получения текущего идентификатора из другой таблицы и мне нужна помощь, потому что я получаю некоторую ошибку на нем

Слишком мало аргументов для функции / directory / :: store (), 1 передано и ожидается ровно 2

Это мой контроллер хранилища функций

public function store(Request $request, $id)
{
    $this->validate($request, array(
        'A' => 'required|max:200',
        'B' => 'required|max:800'
    ));
    $try = new Me();
    $try->id_tableA = Auth::id();
    //$id = 1;
    $incase = Incase::find($id);
    $try->id_tableB = $incase->id;
    $try->A = $request->A;
    $try->B = $request->B;

    $try->save();

    return redirect()->route('controller.index');
}

Таким образом, я могу вставить в свою таблицу собственное значение инициализации, когда я пишу $id = 1 но когда я нахожу id и создаю параметр, использующий $ id для параметра функции, получается ошибка, как я сказал в заголовке. Можете ли вы помочь мне, ребята, так рад, что эту проблему можно решить очень скоро

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Спасибо, Chay22, я понял, когда ты сказал мне в предыдущем ответе,

, поэтому я редактирую форму, контроллер и маршрут на моем уровне

Route::post('directory/{incase}','ControllerController@store')->name('controller.store');

в моей форме я передаю второй параметр в маршруте

{{ route('controller.store',$incase->id) }}

на контроллере я меняю свой идентификатор на $ incase

public function store(Request $request, $incase)

на своем маршруте я делаю пост-маршрут, чтобы получить идентификатор для db

Route::post('directory/{incase}','ControllerController@store')->name('controller.store');
0 голосов
/ 03 сентября 2018

разница между

public function store(Request $request, $id)

и

public function store(Request $request, $id = 1)

является первым, не имеет значения по умолчанию (обязательно), в то время как второе имеет значение 1 (необязательно). Очевидно, верно?

Так что всякий раз, когда вы пытаетесь вызвать принадлежащий маршрут с первым примером метода контроллера с route('controller.store'). Это вызовет ошибку, потому что не передан ни один параметр. Заключение заключается в том, чтобы передать идентификатор при его вызове, например route('controller.store', [1])

Или, если вы разрабатываете так, чтобы он вел себя как необязательный идентификатор для передачи, значит, вы делаете это правильно.

В порядке предпочтения, я немного переписываю ваш код

public function store(Request $request, $id)
{
    $incase = Incase::findOrFail($id);
    $this->validate($request, array(
        'A' => 'required|max:200',
        'B' => 'required|max:800'
    ));

    $try = new Me();
    $try->id_tableA = Auth::id();
    $try->id_tableB = $incase->id;
    $try->A = $request->A;
    $try->B = $request->B;

    $try->save();

    return redirect()->route('controller.index');
}

Сначала я проверяю Incase для идентификатора, данного из маршрута, существует ли он или нет, а затем выдает (показывает) ответ 404, если идентификатор не найден.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...