Laravel по-русски

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

Ты не вошёл. Вход тут.

#1 Re: Общий раздел » Какая стабильная версия Laravel » 03.10.2021 13:49:49

Ещё немного о LTS: заявленные сроки поддержки и требуемые версии PHP. Это может быть важно для планирования апгрейда.

ElHlhpr.png
B2tAW6w.png
и поддержка версий PHP
vyJSc1x.png

в composer.json мы видим какую версию PHP поддерживает данная версия Laravel
ветка 5.5 "php": ">=7.0.0" (т.е. с 8й уже не работает!)
ветка 6.0 "php": "^7.2"
тег 6.19 "php": "^7.2.5|^8.0" (это по прежнему LTS и с этой минорной версии можно ставить на PHP8)
ветка 8.x "php": "^7.3|^8.0"

Если в октябре 2021г думаю о стабильности на ближайшие несколько месяцев, я закладываю работу с PHP8, а значит проект должен заявлять зависимость не ниже Laravel ^6.19.

composer create-project laravel/laravel:^6.19 .

На сегодня такая команда создаст проект с ядром Laravel 6.20.34

PHP подойдёт версии 7.4. Но лучше отловить проблемы совместимости с новым PHP уже сегодня, чем в новом году аврально менять и пыху и фреймворк. Поэтому я бы уже сегодня использовал PHP8. Восьмёрка уже стабильна, а седьмая версия доживает свой век.

В новом 2022г можно будет переходить на Laravel 9 оставаясь на PHP8.

#2 Re: Laravel 5.x » Обновление до последней версии » 21.09.2021 15:09:53

С помощью https://laravelshift.com/ выполнить "черновую" работу. Потому тестировать и допиливать. По пути можно наткнуться на отстутствие актуальной версии у стороннего пакета или обратную несовместимость кода на PHP. Ведь если фреймворк старый, то и пыха наверняка старая используется. Совсем без ручной работы не получится.

#3 Re: Laravel 6/7/8 » Ошибка "The GET method is not supported for this route" при использова » 30.08.2021 17:36:58

Круто. Но каким образом это связано с "GET method is not supported" ты разобрался?

#4 Re: Laravel 6/7/8 » Ошибка "The GET method is not supported for this route" при использова » 30.08.2021 14:32:59

Это нормально иметь два и более middleware.

Я думаю что ошибка "The GET method is not supported for this route. Supported methods: POST" происходит при обращении к api/v1/auth/login . Вероятно это результат редиректа при попытке обращения к кабинету от лица неаутентифицированного пользователя.

Я не пробовал L8 и Sanctum, поэтому это всё мои домыслы.

#5 Re: Laravel 6/7/8 » Запретить смену языка для одного контроллера » 30.08.2021 10:38:59

Ничего не знаю про пакет, который ты используешь. Но:
Мне кажется ты смешиваешь локализацию пользовательского интерфейса и локализацию контента. Страницы, которые ты помещаешь в Route::multilingual, вероятно должны выдавать контент на том или ином языке, независимо от того, какой язык является предпочтительным для пользователя, т.е. на каком языке пишутся меню и служебные сообщения. Не обязательно им совпадать!
Исходя из этого, твои два метода выбора языка должны устанавливать разные переменные внутри приложения и ты сможешь использовать их в разных в приложении независимо.

#6 Re: Laravel 6/7/8 » Ошибка "The GET method is not supported for this route" при использова » 30.08.2021 10:22:17

Наверняка ты смотришь не на тот маршрут, про который сообщение об ошибке.

На всякий случай, попробуй команды php artisan route:list и php artisan route:clear чтобы исключить вариант что ты изменил маршруты, а они по прежнему берутся из старого кеша.

#8 Re: Laravel 6/7/8 » Как правильно сделать redirectTo по role на Lаravel 8? » 27.08.2021 08:13:35

Попробуй использовать отладку: доходит ли в твой метод управление? Посмотри чему равен Auth::user() и Auth::check(), как выполняются твои условия по шагам.

#9 Re: Laravel 6/7/8 » Не понимаю ORM, зная при этом SQL, может готовить не умею? » 27.08.2021 08:07:17

Пиши́те почти также как на сыром SQL:

$vehicles = Vehicle::join('carriers as c', 'c.id', '=', 'vehicles.carrier_id')
    ->where('c.user_id', '=', '1');
    ->orderBy('c.name')
    ->orderBy('vehicles.id')
    ->select('vehicles.*', 'c.name as carrier_name')
    ->get();

Eloquent это конечно ORM, но слабенький smile

#10 Re: Laravel 6/7/8 » Передать количество повторений в наследуемый шаблон Blade » 23.08.2021 08:09:39

В простейшем случае счётчик вообще не надо передавать, если он всегда одинаков. Определяй его в incl.
Другой вариант: передавать значение в @extends('layouts.parent', ['guest_count' => 20])
Третий вариант: получать значение через blade composer непосредственно в incl

Что будет "лучше/красивее" — это очень субъективно. Пробуй разное, развивай свой активный словарь и решай что лучше для тебя.

#11 Re: Laravel 5.x » Image source not readable » 19.08.2021 16:21:00

Видимо что-то изменилось - пути возможно. Надо дебажить: если не через xdebug, то выводя промежуточные значения в логи.

P.S. Ох, некропостингом занимаюсь. ))) Спамобот сбил меня с толку, изобразил живую дискуссию.

#12 Re: Laravel 5.x » Ошибка при переименовывании столбцов » 05.08.2021 15:44:13

Ну не должно быть ошибки при соединении с БД. проект вообще работает с базой кроме этой миграции?
Попробуй установить все компоненты заново: удали папку vendors и файл composer.lock, затем сделай composer install. Должно пройти без ошибок.

#13 Re: Laravel 6/7/8 » падают юнит тесты » 27.07.2021 07:51:08

Если цель теста в проверке что возникает исключение (а abort 404 вызывает исключение), то тебе нужен expectException()

Ну и, само собой, надо не накосячить с кодом. Ошибка 500 говорит о том, что где-то ты облажался. Я не могу ничего подсказать про конкретную библиотеку и походу никто здесь не в курсе.

https://thephp.cc/articles/questioning- … -practices
https://phpunit.de/manual/6.5/en/writin … exceptions

#14 Re: Laravel 6/7/8 » Не могу организовать редирект » 06.07.2021 14:00:07

Ларавель использует симфоневский Http Foundation, поэтому вероятно сходное поведение будет и в множестве других мест: новые версии PHPBB, Drupal и др.

При создании сервиса в т.ч. контроллера можно указать класс или интерфейс для инъекции. Это тема большая, не буду пытаться чему-то учить.

Если этот код не увидит никто кроме тебя, то ради бога, используй инородные сущности. Иначе не надо ))) не провоцируй хейт.

Да, правильно через посредников.

DB будет доступен. Также как и классы-модели. Будет всё доступно, кроме объектов, порождаемых в middleware.

#15 Re: Laravel 6/7/8 » Не могу организовать редирект » 05.07.2021 21:49:51

  1. Мне не совсем понятно, почему я могу получить доступ к сессии из любого метода класса, а из конструктора не могу.

Потому что так устроен стек обработки запроса. Сначала сначала выясняется конечная точка маршрута — метод контроллера, создается экземпляр объекта этого контроллера. Потом вызываются мидлвары в прямом проходе чтобы иметь возможность поработать с запросом. И на вершине стека срабатывает обработчик роута, создается ответ на запрос. Затем мидлвары получают управление в обратном порядке, чтобы иметь возможность поработать с объектом ответа.

#16 Re: Laravel 6/7/8 » Не могу организовать редирект » 03.07.2021 06:51:29

Конструктор контроллера выполняется ДО того как обрабатываются куки и происходит идентификация пользователя. Поэтому проверка не работает.

Если я правильно понял задумку, то вам надо воспользоваться controller middleware. Объявление middleware не означает что её код выполнится прямо в этом месте и в этот момент. Мы таким образом помещаем проверку в очередь (стек) посредников, которые выполнятся позже конструктора, но перед обращением к методу-экшену маршрута.

#17 Re: Вакансии » Портал недвижимости » 23.06.2021 18:37:55

Какого ответа вы ждёте, Роман: "Да, хочу работать на вас, зная что денег нет"?
Движок на позицию в поисковике не влияет. ВП служит основой для примерно половины коммерческих решений. Лично я не поклонник вордпресса, но не вижу логики в вашем утверждении.
У вас нет "конкурентов", потому что сайт по ссылке выглядит просто нерабочим.

#18 Re: Laravel 6/7/8 » Cложный запрос через Eloquent, для получения объекта на выходе. » 14.06.2021 16:09:10

Можешь гуглить со словом "subquery". Например вот такое находится:
https://laravel.io/forum/12-23-2015-sub … ry-builder
Типа

$query1 = DB::table(DB::raw('(' . $query1->toSql() . ')  as tab1'))...

#19 Re: Laravel 6/7/8 » Опять магическая ошибка от ларавел:This cache store does not support » 10.06.2021 14:45:17

Последняя попытка smile

Что такое валидация? Это точка где происходит ветвление в программе: если данные отвечают заданным требованиям, то выполняется один кусок кода, а если не отвечают то другой кусок кода (обработка ошибки). Вот в этом другом куске у тебя есть нечто, требующее кэш и, ещё более конкретно, кэш с поддержкой тегов. А этой поддержки нет. Это написано английским по белому в тексте. Почему? Потому что ты взял файловый кеш. https://laravel.com/docs/8.x/cache#cache-tags

и как надо прописать валидацию чтобы она использовала раздельный кеш?

Валидация не использует кеш. Читай выше что происходит.

В стеке вызовов ты мог бы найти нужное место или мог бы пошагово дойти до него с xdebug. Надо просто научиться читать сообщения об ошибках.

#20 Re: Laravel 6/7/8 » Опять магическая ошибка от ларавел:This cache store does not support » 10.06.2021 12:00:11

Аргументация на уровне "Древние греки любили театр, они все мертвы. Театр - зло"
Не буду тебе мешать.

#21 Re: Laravel 6/7/8 » Опять магическая ошибка от ларавел:This cache store does not support » 09.06.2021 20:36:00

Это ничерта не говорит про валидацию. Отлаживайся, а не фантазируй.

#22 Re: Laravel 5.x » Сессии от посещений гуглобота » 08.06.2021 12:22:36

Упоминание мидлваров в app/Http/Kernel.php, ищи 'web'. Там будет StartSession. Расскажешь потом как его менял wink

#23 Re: Laravel 5.x » Сессии от посещений гуглобота » 08.06.2021 12:15:37

Просто спайдер не поддерживает куки, поэтому для серверного скрипта это выглядит не как новый заход того же пользователя, а как новый независимый заход. Сколько обращений, столько отдельных сессий.

Боюсь стандартными средствами Laravel ты это никак не решишь. Только если откажешься от поддержки сессий в принципе, уберешь соответствующий мидлвар.

(Не пользуйся бесплатным/копеечным хостингом чтобы тебе никто не предъявлял такую фигню)

#24 Re: Laravel 6/7/8 » Опять магическая ошибка от ларавел:This cache store does not support » 08.06.2021 12:07:14

Сосредоточься, Убунта. Какую ошибку? Почему ты связал её с валидацией? Я не понимаю ход твоих мыслей и, наверняка, никто не понимает.

#25 Re: Laravel 6/7/8 » Не работает стандартная защита BREEEZE от множественного запроса » 07.06.2021 15:24:36

Скорее всего не вызывается hit(), который этот счётчик увеличивает. Например потому, что до него не доходит управление из-за dd()

Если сложность задачи превышает твой уровень понимания, возвращайся к простому.
Тестируй то же самое на простом примере БЕЗ лишнего кода.
Прежде чем попытаться переложить трудности на чужие плечи, включи xdebug и посмотри что именно происходит.
Ты умеешь вставлять dd(), теперь убери их все (!!!) и отлаживайся без остановки скрипта.

Подвал раздела