Вопрос №60660 от пользователя Defrel 123 в уроке «Ресурсная маршрутизация», курс «PHP: Разработка на Laravel»

Defrel 123

Вопрос, который остался без ответа в комментариях. Почему ларавел не устраивает название переменной, которую он сам же и указывает $articleComment? А более того, какая вообще разница, какое название переменной?

И другой вопрос, зачем в решение учителя нужно исключать токен $comment->fill($request->except('_token'));, когда у нас в модели явно указано, что филить можно только контент protected $fillable = ['content'];

3 0

Роман Ашиков

Дело в том, что в Laravel используется Autowiring. Не буду вдаваться в подробности, так как это довольно глубокая тема, но если кратко. При поиске модели с нужным ID Laravel использует имя параметра, иначе параметр воспринимается как зависимость, собственно, это будет модель-пустышка.

У нас есть ресурс arcticles.comments поэтому мы должны использовать параметр с именем $comment. Если бы ресурс назывался articles.article_comments, что довольно странно выглядит, то имя параметра было бы $articleComment. То есть Laravel связывает имя параметра с ресурсом.

По второму вопросу. Вы пробовали удалить $request->except('_token') и запустить проверку?

0

Defrel 123

А, я понял, т.е. всё руинится на этом этапе ArticleComment $articleComment? Из-за такой записи, ларавел сам ничего не может найти, правильно? Поведение тоже странное, как для меня, у него есть явно указание, что ему нужно, указан типа ArticleComment, какая разница, что идёт после непонятно. А изначально я думал, что оно ломается на этапе передачи переменной в шаблон.

По второму вопросу. Вы пробовали удалить $request->except('_token') и запустить проверку?

Конечно, я и решил этого без экцепта и всё работает, тесты проходят. Я даже не смотрел, что там может приходить через тинкер, т.к. есть филлабл, есть фил, ты не можешь зафилить в модель свойства, которые не указаны в филабл.

0

Роман Ашиков

А, я понял, т.е. всё руинится на этом этапе ArticleComment $articleComment? Из-за такой записи, ларавел сам ничего не может найти, правильно?

Да, верно.

Конечно, я и решил этого без экцепта и всё работает, тесты проходят.

Я исправил решение. Спасибо, что обратили внимание на этот недочёт! Чтобы обновить практику, выполните сброс.

0

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг»

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
26 января 8 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
26 января 8 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
26 января 8 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
26 января 8 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
26 января 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Новый
Создает веб-приложения со скоростью света
26 января 5 месяцев