Не работают роуты laravel

Содержание
  1. Laravel по-русски
  2. #1 04.07.2017 13:04:01
  3. новичок: Route::get не находит шаблон запроса
  4. #2 04.07.2017 14:40:38
  5. Re: новичок: Route::get не находит шаблон запроса
  6. #3 04.07.2017 16:08:56
  7. Re: новичок: Route::get не находит шаблон запроса
  8. #4 04.07.2017 16:29:55
  9. Re: новичок: Route::get не находит шаблон запроса
  10. #5 05.07.2017 08:44:25
  11. Re: новичок: Route::get не находит шаблон запроса
  12. #6 05.07.2017 10:37:45
  13. Re: новичок: Route::get не находит шаблон запроса
  14. #7 05.07.2017 10:41:53
  15. Re: новичок: Route::get не находит шаблон запроса
  16. #8 05.07.2017 10:56:25
  17. Re: новичок: Route::get не находит шаблон запроса
  18. #9 05.07.2017 12:35:08
  19. Re: новичок: Route::get не находит шаблон запроса
  20. #10 05.07.2017 12:47:09
  21. Re: новичок: Route::get не находит шаблон запроса
  22. #11 05.07.2017 12:56:10
  23. Re: новичок: Route::get не находит шаблон запроса
  24. #12 05.07.2017 13:00:13
  25. Re: новичок: Route::get не находит шаблон запроса
  26. #13 05.07.2017 13:45:37
  27. Re: новичок: Route::get не находит шаблон запроса
  28. #14 05.07.2017 13:47:56
  29. Re: новичок: Route::get не находит шаблон запроса
  30. #15 05.07.2017 13:59:20
  31. Re: новичок: Route::get не находит шаблон запроса
  32. #16 07.07.2017 00:49:48
  33. Re: новичок: Route::get не находит шаблон запроса
  34. #17 07.07.2017 08:26:55
  35. Re: новичок: Route::get не находит шаблон запроса
  36. #18 07.07.2017 08:33:50
  37. Re: новичок: Route::get не находит шаблон запроса
  38. #19 07.07.2017 09:22:29
  39. Re: новичок: Route::get не находит шаблон запроса
  40. #20 07.07.2017 11:46:04
  41. Re: новичок: Route::get не находит шаблон запроса
  42. #21 07.07.2017 12:02:16
  43. Re: новичок: Route::get не находит шаблон запроса
  44. #22 07.07.2017 12:06:31
  45. Re: новичок: Route::get не находит шаблон запроса
  46. #23 07.07.2017 12:07:41
  47. Re: новичок: Route::get не находит шаблон запроса
  48. #24 07.07.2017 12:42:01
  49. Re: новичок: Route::get не находит шаблон запроса
  50. #25 07.07.2017 12:55:40
  51. Re: новичок: Route::get не находит шаблон запроса
  52. Laravel Framework Russian Community
  53. Пролог
  54. Начало работы
  55. Основы архитектуры
  56. Основы
  57. Фронтенд
  58. Безопасность
  59. Копаем глубже
  60. База данных
  61. Eloquent ORM
  62. Тестирование
  63. Официальные пакеты
  64. Роутинг
  65. Простейший роутинг
  66. Файлы роутов по умолчанию
  67. Доступные методы роутера
  68. CSRF-защита
  69. Параметры роутов
  70. Обязательные параметры
  71. Необязательные параметры
  72. Ограничения регулярными выражениями
  73. Глобальные ограничения
  74. Именованные роуты
  75. Генерирование URL адресов для именованных роутов
  76. Группы роутов
  77. Посредники
  78. Пространства имён
  79. Доменный роутинг
  80. Префиксы роута
  81. Привязка модели роута
  82. Неявная привязка
  83. Изменение имени ключа
  84. Явная привязка
  85. Изменение логики принятия решения
  86. Подмена методов
  87. Получение текущего роута

Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

#1 04.07.2017 13:04:01

новичок: Route::get не находит шаблон запроса

только начал изучать Laravel (в частности, тут и тут ). Установлен apache2, php 5.6, Laravel 5.4
Пытаюсь в web.php поменять шаблон запроса

тоже все хорошо. А вот так

при вводе адреса localhost/hello пишет 404 URL не найден. Вот конфигурация apache’а

apache2ctl -M . и a2enmod rewrite на всякий случай выполнил. Что я делаю не так?

Не в сети 27.06.2017

#2 04.07.2017 14:40:38

Re: новичок: Route::get не находит шаблон запроса

нужен виртуальный хост + .htaccess в папке public

не забудь поправить servername, должно работать.

Не в сети 18.04.2016

#3 04.07.2017 16:08:56

Re: новичок: Route::get не находит шаблон запроса

без толку. По прежнему, срабатывает только на get(‘/’). А на ‘laravel.dev/hello’ 404 ошибка

Не в сети 27.06.2017

#4 04.07.2017 16:29:55

Re: новичок: Route::get не находит шаблон запроса

в error.log апач что-нибудь интересное пишет?

Не в сети 19.02.2015

#5 05.07.2017 08:44:25

Re: новичок: Route::get не находит шаблон запроса

вообще ничего не пишет

Не в сети 27.06.2017

#6 05.07.2017 10:37:45

Re: новичок: Route::get не находит шаблон запроса

Права на /storage и /bootstrap/cache меняли после установки? Порой, универсальное средство, чтобы «все заработало».

Не в сети 23.06.2015

#7 05.07.2017 10:41:53

Re: новичок: Route::get не находит шаблон запроса

обижаете :-)! без доступа на запись у меня вообще ничего не работало

Не в сети 27.06.2017

#8 05.07.2017 10:56:25

Re: новичок: Route::get не находит шаблон запроса

В /storage/logs/laravel.log есть что-нибудь?

Не в сети 23.06.2015

#9 05.07.2017 12:35:08

Re: новичок: Route::get не находит шаблон запроса

laravel.log отсутствует
route:list пишет

Изменено mokynis (05.07.2017 12:40:54)

Не в сети 27.06.2017

#10 05.07.2017 12:47:09

Re: новичок: Route::get не находит шаблон запроса

Ну да, еще бы работало 🙂
И что же это такое:

Читайте также:  Домофон не работает с моим номером квартиры

? 🙂
И куда же он должен этот «Привет» передать по-вашему? 🙂

Не в сети 23.06.2015

#11 05.07.2017 12:56:10

Re: новичок: Route::get не находит шаблон запроса

почему тогда передается? Или где-то (в public?) надо создать папку «hello»?

Изменено mokynis (05.07.2017 12:59:35)

Не в сети 27.06.2017

#12 05.07.2017 13:00:13

Re: новичок: Route::get не находит шаблон запроса

Не знаю. Если с возвратом представления все работает нормально, думаю, заморачиваться не стоит.

Не в сети 23.06.2015

#13 05.07.2017 13:45:37

Re: новичок: Route::get не находит шаблон запроса

И куда же он должен этот «Привет» передать по-вашему?

вывести в браузер конечно. из обработчика запроса можно много чего вернуть. тот же view превращается в текстовый ответ потому что содержит магический метод __toString(), специальной обработки для него там вроде нет. можно вернуть массив или Collection – тогда автоматом будет выставлен content-type: application/json и на результате будет сделать json_encode. в документации всё есть…

по-моему у mokynis просто не включен mod_rewrite в апаче. надо попробовать сделать a2enmod rewrite и выполнить systemctl restart apache2

ps. а не, прочитал первое сообщение, уже сделано. тогда не знаю…

Изменено constb (05.07.2017 13:46:30)

Не в сети 19.02.2015

#14 05.07.2017 13:47:56

Re: новичок: Route::get не находит шаблон запроса

стОит. Я сейчас курс слушаю (https://www.youtube.com/watch?v=R-oH8iTAhVc), там в web.php примерно такое (это я ооочень условно написал)

и во view test.blade.php

и вот тут-то у лектора все нормально срабатывает, а у меня «404»

Не в сети 27.06.2017

#15 05.07.2017 13:59:20

Re: новичок: Route::get не находит шаблон запроса

по-моему у mokynis просто не включен mod_rewrite в апаче.

на всякий случай посмотрел вывод phpinfo()

Loaded Modules
core mod_so mod_watchdog http_core mod_log_config mod_logio mod_version mod_unixd mod_access_compat mod_alias mod_auth_basic mod_authn_core mod_authn_file mod_authz_core mod_authz_host mod_authz_user mod_autoindex mod_deflate mod_dir mod_env mod_filter mod_mime prefork mod_negotiation mod_php5 mod_rewrite mod_setenvif mod_status

Не в сети 27.06.2017

#16 07.07.2017 00:49:48

Re: новичок: Route::get не находит шаблон запроса

А если из предлагаемого по-умолчанию маршрута
Route::get(‘/’, function () <
return view(‘welcome’); >);
Сделать
‘/hello’
а view(). оставить?

если не поможет, ещё попробовать php artisan serve в консоли, и не закрывая консоль ещё раз открыть тот же маршрут

Не в сети 13.01.2017

#17 07.07.2017 08:26:55

Re: новичок: Route::get не находит шаблон запроса

Прошу у всех прощения за глупости, что писал в этой теме. Был неправ.

Не в сети 23.06.2015

#18 07.07.2017 08:33:50

Re: новичок: Route::get не находит шаблон запроса

Сделать
‘/hello’
а view(). оставить?

выдал экран ошибки программы

после php artisan serve та же самая ошибка. Может, Laravel какой-то неправильный (как пчелы у Вини-Пуха). Во всяком случае NetBeans подсвечивает его красным и пишет, что проект содержит ошибки. Напирмер, в /vendor/symfony/http-kernel/Tests/Fixtures/Controller/NullableController.php (хотя там, кажется, нечему быть неправильным)

Не в сети 27.06.2017

#19 07.07.2017 09:22:29

Re: новичок: Route::get не находит шаблон запроса

Может попробовать сделать composer update ? Мало ли, вдруг реально какой то фаил там «поврежден»

Изменено TrueKanonir (07.07.2017 09:24:11)

Не в сети 12.02.2016

#20 07.07.2017 11:46:04

Re: новичок: Route::get не находит шаблон запроса

увы. Ничего не дало. Это только мне с Laravel так не везет?

Не в сети 27.06.2017

#21 07.07.2017 12:02:16

Re: новичок: Route::get не находит шаблон запроса

NetBeans может быть старой версии и ничего не знать про пхп той версии, под которую написан ларавель (сейчас – 5.6). какой-нибудь синтаксис, который сейчас вполне рабочий, ему может казаться ошибкой…

увы. Ничего не дало. Это только мне с Laravel так не везет?

в чём-то определённо не везёт. возможно апач/пхп как-то не так установлены, всякое бывает… даже если на чистую систему из пакетов ставить, некоторые вещи надо отдельно настраивать бывает. судя по пхп 5.6, я подозреваю, стоит debian jessie…

Изменено constb (07.07.2017 12:03:57)

Не в сети 19.02.2015

#22 07.07.2017 12:06:31

Re: новичок: Route::get не находит шаблон запроса

NetBeans, скорее всего, подсвечивает конструкции вида *::class, там нужно перенастроить проверку синтаксиса на другую версию php, кажется. У меня что-то такое было. Вообще, посмотрите в сторону Atom 🙂

«Не везет», думаю, только Вам одному. Притом учтите, что никто здесь не видит, что там у Вас, на самом деле, происходит. Лично я бы (лично я!), совсем отчаявшись, попробовал бы снова сделать чистую установку с нуля, по какой-нибудь толковой инструкции. Как веб-сервера, так и фреймворка, тестируя каждый шаг.

Читайте также:  Power bi как настроить автоматическое обновление данных

Не в сети 23.06.2015

#23 07.07.2017 12:07:41

Re: новичок: Route::get не находит шаблон запроса

ещё мысль есть такая, что с правами могут быть косяки если файлы или папки создавались или правились из-под рута. насколько я понимаю всё работает от www-data (и апач и пхп) в папке /var/www ? это не очень хорошо, но можно попытаться сделать так:

– полный сброс прав и владельцев на всё что находится внутри, может поможет?…

Не в сети 19.02.2015

#24 07.07.2017 12:42:01

Re: новичок: Route::get не находит шаблон запроса

я подозреваю, стоит debian jessie…

именно так. И NetBeans 8.2 Вообще, не замечал косяков в связке apache-php. Я конечно, «не волшебник, я только учусь», но так, чтобы, как я понимаю, тривиальные функции Laravel не срабатывали, такой глюк уже, наверное, бы вылез
У меня в /var/www/ только одна ссылка на /home/ /web_projects и та нее и ее содержимое у всех полный доступ, так что не в нем дело

Изменено mokynis (07.07.2017 12:47:07)

Не в сети 27.06.2017

#25 07.07.2017 12:55:40

Re: новичок: Route::get не находит шаблон запроса

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

Источник

Laravel Framework Russian Community

Пролог

Начало работы

Основы архитектуры

Основы

Фронтенд

Безопасность

Копаем глубже

База данных

Eloquent ORM

Тестирование

Официальные пакеты

Роутинг

Простейший роутинг

В Laravel простейшие роуты принимают URI (путь) и функцию-замыкание, предоставляя очень простой и выразительный метод определения роутов:

Файлы роутов по умолчанию

Все роуты Laravel определены в файлах роутов, которые расположены в директории routes . Эти файлы автоматически загружаются фреймворком. В файле routes/web.php определены роуты для вашего web-интерфейса. Эти роуты входят в группу посредников web , которые обеспечивают такие возможности, как состояние сессии и CSRF-защита. Роуты из файла routes/api.php не сохраняют состояние приложения и входят в группу посредников api .

Для большинства приложений сначала определяются роуты в файле routes/web.php .

Доступные методы роутера

Роутер (маршрутизатор) позволяет регистрировать роуты для любого HTTP-запроса:

Иногда необходимо зарегистрировать роут, который отвечает на HTTP-запросы нескольких типов. Это можно сделать методом match . Или вы можете зарегистрировать роут, отвечающий на HTTP-запросы всех типов, с помощью метода any :

CSRF-защита

Все HTML-формы, ведущие к роутам POST , PUT или DELETE , которые определены в файле роутов web , должны иметь поле CSRF-токена. Иначе запрос будет отклонён. Подробнее о CSRF-защите читайте в документации CSRF:

Параметры роутов

Обязательные параметры

Разумеется, иногда вам может понадобиться захватить сегменты URI в вашем роуте. Например, если вам необходимо захватить ID пользователя из URL. Это можно сделать, определив параметры роута:

Вы можете определить сколько угодно параметров:

Параметры роута всегда заключаются в фигурные скобки <> и должны состоять из буквенных символов. Параметры роута не могут содержать символ — . Используйте вместо него подчёркивание ( _ ). Параметры роута внедряются в анонимные функции / контроллеры роута, основываясь на их порядке — названия аргументов анонимных функций / контроллеров не имеют значения.

Необязательные параметры

Иногда необходимо указать параметр роута, но при этом сделать его наличие необязательным. Это можно сделать, поместив знак вопроса ? после названия параметра. Не забудьте задать значение по умолчанию для соответствующей переменной роута:

Ограничения регулярными выражениями

Вы можете ограничить формат параметров вашего роута с помощью метода where на экземпляре роута. Метод where принимает название параметра и регулярное выражение, определяющее ограничения для параметра:

Глобальные ограничения

Если вы хотите, чтобы параметр был всегда ограничен заданным регулярным выражением, то можете использовать метод pattern . Вам следует определить эти шаблоны в методе boot вашего RouteServiceProvider :

Когда шаблон был определён, он автоматически применится ко всем роутам, использующим этот параметр:

Именованные роуты

Именованные роуты позволяют удобно генерировать URL-адреса и делать переадресацию на конкретный роут. Вы можете задать имя роута, прицепив метод name к определению роута:

Читайте также:  Как починить зарядку для аккумуляторов

Также можно указать имена роутов для действий контроллера:

Генерирование URL адресов для именованных роутов

Когда вы назначили имя роуту, вы можете использовать это имя для генерирования URL адресов и переадресаций глобальным методом route :

Если у именованного роута есть параметры, вы можете передать их вторым аргументом метода route . Эти параметры будут автоматически вставлены в соответствующие места URL:

Группы роутов

Группы роутов позволяют использовать общие атрибуты роутов, такие как посредники и пространства имён, для большого числа роутов без необходимости определять эти атрибуты для каждого отдельного роута. Общие атрибуты указываются в виде массива первым аргументом метода Route::group .

Посредники

Посредники применяются ко всем роутам в группе путём указания списка этих посредников с параметром middleware в массиве групповых атрибутов. Посредники выполняются в порядке перечисления в этом массиве:

Пространства имён

Другой типичный пример использования групп роутов — назначение одного пространства имён PHP для группы контроллеров, используя параметр namespace в массиве группы:

Помните, по умолчанию RouteServiceProvider включает ваши файлы роутов в группу пространства имён, позволяя вам регистрировать роуты контроллера без указания полного префикса пространства имён App\Http\Controllers . Поэтому нам надо указать лишь ту часть пространства имён, которая следует за базовым пространством имён App\Http\Controllers .

Доменный роутинг

Группы роутов можно использовать для обработки маршрутизации поддоменов. Поддоменам можно назначать параметры роутов также как URI роутов, поэтому вы можете захватить часть поддомена и использовать в своём роуте или контроллере. Поддомен можно указать с помощью ключа domain в массиве атрибутов группы:

Префиксы роута

Метод prefix можно использовать для указания URI-префикса каждого роута в группе. Например, если вы хотите добавить admin ко всем URI роутов в группе:

Привязка модели роута

При внедрении ID модели в действие роута или контроллера бывает часто необходимо получить модель, соответствующую этому ID. Привязка моделей — удобный способ автоматического внедрения экземпляров модели напрямую в ваши роуты. Например, вместо внедрения ID пользователя вы можете внедрить весь экземпляр модели User , который соответствует данному ID.

Неявная привязка

Laravel автоматически включает модели Eloquent, определённые в действиях роута или контроллера, чьи переменные имеют имена, совпадающие с сегментом роута. Например:

Так как переменная $user указывается в качестве аргумента Eloquent модели App\User и название переменной совпадает с URI-сегментом , автоматически внедрит экземпляр модели, который имеет ID, совпадающий с соответствующим значением из URI запроса. Если совпадающий экземпляр модели не найден в базе данных, будет автоматически сгенерирован HTTP-отклик 404.

Изменение имени ключа

Если вы хотите, чтобы для получения класса данной модели вместо столбца id использовался другой столбец базы данных, вы можете переопределить метод getRouteKeyName в своей модели Eloquent:

Явная привязка

Для регистрации явной привязки используйте метод роута model для указания класса для данного параметра. Вам надо определить явные привязки вашей модели в методе boot класса RouteServiceProvider :

Затем определите роут, содержащий параметр :

Из-за того, что мы ранее привязали все параметры к модели App\User , её экземпляр будет внедрён в роут. Таким образом, к примеру, запрос profile/1 внедрит объект User , полученный из БД, который соответствует ID 1 .

Если совпадающий экземпляр модели не найден в базе данных, будет автоматически сгенерирован HTTP-отклик 404.

Изменение логики принятия решения

Если захотите использовать собственную логику принятия решения, используйте метод Route::bind . Переданное в метод bind замыкание получит значение сегмента URI, и должно вернуть экземпляр класса, который вы хотите внедрить в роут:

Подмена методов

HTML-формы не поддерживают действия PUT , PATCH или DELETE . Поэтому при определении роутов PUT , PATCH или DELETE , вызываемых из HTML-формы, вам надо добавить в неё скрытое поле _method . Переданное в этом поле значение будет использовано как метод HTTP-запроса:

Используйте хелпер method_field , чтобы сгенерировать ввод _method :

Получение текущего роута

Используйте методы current , currentRouteName и currentRouteAction фасада Route для получения информации о роуте, обрабатывающем входящий запрос:

Чтобы изучить все доступные методы, обратитесь к документации по API класса, лежащего в основе фасада Route и экземпляра Route.

Источник

Оцените статью