Laravel по-русски

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

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

#1 Re: Laravel 5.x » Текущий роут или контроллер » 09.01.2021 12:52:24

я это уже слышал, но никто не предложил работающего варианта

#2 Re: Laravel 5.x » Текущий роут или контроллер » 04.11.2020 11:59:44

Не знаю чем тебе помочь. Ты сам провоцируешь ошибку

Забудь за мой код, мне нужно чтобы урл site.ru/aaa/bbb вызывал акшн bbb у контроллера aaa, чтобы это работало без явного вписывания маршрута aaa/bbb в файл маршрутов, чтобы был какойто маршрут-формула которая бы обрабатывала такие урлы. Такое сделать возможно в ларавел без потери функциональности?

#3 Re: Laravel 5.x » Текущий роут или контроллер » 22.09.2020 21:41:10

Понимаешь о чём я? Видимо нет

Умничание не делает человеку чести...

Ларавелевский пайплайн с мидлварами уже не участвует в нём

Тоесть все же нельзя на Ларавеле сделать эту удобную штуку без потери функциональности. Пайплайн не очень удачный значит в Ларавел, признайте это!:)

#4 Re: Laravel 5.x » Текущий роут или контроллер » 22.09.2020 14:56:45

Итого: овчинка выделки не стоит

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

Я работаю в проекте где подобное есть

А как это реалезовано не используя замыкание? Если не секрет.

#5 Re: Laravel 5.x » Текущий роут или контроллер » 21.09.2020 10:31:15

урл /controllerName/actionName и он исходя из такого урла вызывает соответсвующий экшен контроллера?

Не уж то никто такого не делал?

#6 Re: Laravel 5.x » Текущий роут или контроллер » 17.09.2020 11:29:47

Когда-нибудь ты захочешь использовать именованные маршруты или рут миддлвары и обнаружишь

Да, понадобилось использовать событие - beforeAction, и как выяснилось это тоже не работает из-за этого моего роута с анонимной функцией, зачем таковые тогда нужны если при них ничего не работает, и главный вопрос - как сделать такое: указываешь Ларавелу в урл /controllerName/actionName и он исходя из такого урла вызывает соответсвующий экшен контроллера? Или это невозможно в Ларавел без потери его фунциональности? Если да то оочень странно, так как это очень удобно и в yii это прям из коробки идет.

#7 Re: Laravel 5.x » Текущий роут или контроллер » 14.09.2020 20:24:28

Если ты думал, что объект Маршрут бежит по стеку

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

То есть городишь своё

Ну почему свое? Если это не коректное правило роута, то как тогда подобное сделать корректно? А оно бывает нужно и очень удобно, не верю что в средних и выше проектах, где экшинов за сотню переваливает пишут на каждый - статический маршрут, создавая при этом простыню, в которой потом черт ногу сломит!
В yii это идет из коробки, и при этом система фреймворка всегда может тебе сообщить имя контроллера и экшена.

#8 Re: Laravel 5.x » Текущий роут или контроллер » 14.09.2020 11:43:28

Что ты хотел получить в качестве имени, когда использовал замыкание

Я хочу получить имя контроллера и акшена, система же знает какой котнроллер и акшен она запустила, просто это надо делать видимо не через роут, так как функции ларавела просто парсят строку из статического роута - параметр 'BaseController@routeInfo', но если роут в виде правила, то такое уже не работает. Я пытаюсь найти метод которые система выдает уже после обработки маршрута и вызова конкретного акшена, в этот момент она же знает уже все и может сообщить это.

Фактически, ты отказался от стандартной маршрутизации, что-то городишь своё.

не свое, а подибие правила которое в yii идет из коробки, я много проработал на yii и скажу что такие правила очень удобны! Избавляют от простыней в роутере.

#9 Re: Laravel 5.x » Текущий роут или контроллер » 13.09.2020 20:14:32

Инстанс! Он возвращает указатель на объект контроллера

я вкурсе что такое инстанс smile, не первый год как программист

у меня код request()->route()->getController() выдает такое эрор "mb_strpos() expects parameter 1 to be string, object given"
а код request()->route()->getActionMethod() выдает - Closure

и я понял почему, при таком простом роуте

Route::get('/test', 'BaseController@routeInfo')->name('test');

все хорошо, но у меня фронтовые контроллеры работают по такому правилу

Route::any('/{slug1}/{slug2}', function($slug1,$slug2) {
    return App::make('App\Http\Controllers\front\\'.ucfirst($slug1).'Controller')->$slug2();
});

Как в этом случае быть? нужно как-то узнать значения {slug1} и {slug2}, просто брать с урла - не вариант, ну точнее можно но это точно будет не элегантное решение, так как сделана для сеошников автозамена урлов на вбитые из админки.

#10 Re: Laravel 5.x » Текущий роут или контроллер » 11.09.2020 20:11:52

в апи есть метод получения контроллера https://laravel.com/api/5.8/Illuminate/ … Controller, но он не работает, там баг - ругается на mb_strpos, на гитхабе писали про это - https://github.com/laravel/framework/issues/20507, но как понял так и не пофиксили

#11 Re: Laravel 5.x » Текущий роут или контроллер » 11.09.2020 20:00:19

Что значит "родительский контроллер"

есть FrontController, от него наследуются все контроллеры которые генерят фронтСтраницы, мне нужно на страницу в зависимости от имени контроллера и экшена подтягивать метатеги, для этого в FrontController до рендера должна вызватся функция которая на основании текущего контроллера и экшена вытянет из базы нужные метатеги, в yii это делается очень просто, а здесь не могу найти как получить имя контроллера и экшена, пытался через роуты это сделать, но по ходу не выйдет, должен же быть способ получания имени экшина и контроллера...

#12 Re: Laravel 5.x » Текущий роут или контроллер » 11.09.2020 16:51:47

Route::currentRouteName()

это возвращает null

Route::getCurrentRoute() - это работает, но оно выдает общее правило которое сработало, а нужно текущее значение в этом правиле, вообще мне нужно идентифицировать вызванный action+controller

#13 Laravel 5.x » Текущий роут или контроллер » 11.09.2020 11:50:47

Koten4ik
Ответов: 24

Всем привет, как в 5.8 получить в родительском контроллере текущий роут или контроллер? Гугл выдает много способов, но ни один не работает, то краш, то выдает не то что нужно.

#14 Re: Laravel 5.x » путь к view файлам на nginx » 22.07.2020 16:00:10

админского доступа к серваку у меня нет, надо админа просить, какой именно файл конфига нужен? а то я хз как сервак устроен

#16 Laravel 5.x » путь к view файлам на nginx » 22.07.2020 14:34:55

Koten4ik
Ответов: 5

Всем привет. На локалке стоит apache, я файлы представлений храню в не стандартной директории, потому в конфиге пишу

'paths' => [  resource_path('views'),   base_path('my/path')   ]

Все работает. На продакшине стоит nginx, там это почему то не работает и laravel ищет файлы представлений в стандартной директории. Может кто знает как это поправить? Версия laravel - 5.8

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