@prozrost

Как добавить в ссылку объект модели?

Создал Resource Controller,прописал роутинг в файле web.
Выглядит вот так:
Route::resource('teams','TeamController');
Как я понял с документации, созданы роуты и имена для них.
Я хочу добавить в мою вьюху напротив каждого элемента с модели кнопки типа "Редактировать,удалить,посмотреть"
Делаю это так:
@foreach($teams as $team)
        <tr>
            <td>{{$team->name}}</td>
            <td>{{$team->score}}</td>
            <td>
                <a class="btn btn-info" href="{{ route("teams.show/{$team}") }} ">Show</a>
                {{--<a class="btn btn-danger" href="{{ route("teams.destroy/{$team}") }}">Delete</a>--}}
                <a class="btn btn-info" href="{{ route("teams.edit/{$team}/edit") }}">Update</a>
            </td>
        </tr>
        @endforeach

Но теперь ошибка:
Route [show/{"id":8,"name":"Zorya","score":15}] not defined. (View: H:\xampp\htdocs\hockeyapp\resources\views\teams\index.blade.php)

Как я понял, с Laravel 5 можно теперь работать не через $id, а через сам обьект,но как это сделать не знаю.
  • Вопрос задан
  • 185 просмотров
Решения вопроса 1
ajaxtelamonid
@ajaxtelamonid
Laravel
Автобиндинг моделей работает в файле роутов (https://laravel.com/docs/5.4/routing#route-model-b... в генерации ссылок все по прежнему, надо передавать id.
Вы зачем-то подставляете id модели в имя роута, а не передаёте вторым аргументом: https://laravel.com/docs/5.4/routing#named-routes
Автобиндинг нет смысла юзать, запутаете себя, а бонуcов никаких. Действуйте по простому, как раньше, оперируйте только id.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Konstantin18ko
@Konstantin18ko
Стоматолог
href="{{ route("teams.show", ["id"=>$team->id]) }}
Тоже самое с delete.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы