Маршрут связывания модели Laravel5.8. Переданное Arg 1 должно быть экземпляром Model - PullRequest
1 голос
/ 24 мая 2019

Laravel Project реализован с локализацией и работает нормально.Выполнение настройки как пользователь может сохранить язык (локаль) в БД, и здесь возникает проблема.

  1. Пользователь способен сохранить язык в БД.
  2. И когда пользователь пытается изменить язык (локаль), то получает эту проблему.

Аргумент 1 передается в App \ Http \ Controllers \ CustomizeController :: edit (), долженбыть экземпляром App \ Model \ Customize, строка, заданная

в CustomizeController.php

    public function index()
{
    $data = array(
        'title' =>'Customize',
        'heading' =>'List',
        'customize' => Customize::where(['user_id' => Auth::user()->id])->first(),
    );
    if ($data['customize'])
    {
        return redirect()->route('customize.edit', ['locale' => app()->getLocale(), 'customize' => $data['customize']]); // Redirect to Edit Route If Language available in DB
    }
    return view('Customize.index')->with($data);
}

route: список команд O / P, как показано ниже:

GET|HEAD  | {locale}/customize/{customize}/edit | customize.edit | App\Http\Controllers\CustomizeController@edit | web,setlocale,auth

Даже пытался жестко закодировать с блейда как:

<a href="{{ url(app()->getLocale().'/customize/1/edit') }}">
        <button type="button" class="btn btn-warning">Edit</button>
    </a>

Завершить проект доступно здесь

1 Ответ

1 голос
/ 24 мая 2019

Ошибка довольно прямолинейна.

Метод edit вызывается с параметрами маршрута, за которыми следует объект, который вы определили для получения из контейнера.

Поскольку вы передаете параметр customize в маршрут, аргументы вашего метода должны быть определены следующим образом:

public function edit(string $customize, App\Model\Customize $customizeModel)
{
    $customizeModel
        ->whereUserId(Auth::user()->id)
        ->update(['customize' => $customize]);

    $return response(); // whatever you need
}
...