Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
я это уже слышал, но никто не предложил работающего варианта
Не знаю чем тебе помочь. Ты сам провоцируешь ошибку
Забудь за мой код, мне нужно чтобы урл site.ru/aaa/bbb вызывал акшн bbb у контроллера aaa, чтобы это работало без явного вписывания маршрута aaa/bbb в файл маршрутов, чтобы был какойто маршрут-формула которая бы обрабатывала такие урлы. Такое сделать возможно в ларавел без потери функциональности?
Понимаешь о чём я? Видимо нет
Умничание не делает человеку чести...
Ларавелевский пайплайн с мидлварами уже не участвует в нём
Тоесть все же нельзя на Ларавеле сделать эту удобную штуку без потери функциональности. Пайплайн не очень удачный значит в Ларавел, признайте это!:)
Итого: овчинка выделки не стоит
Спасибо за развернутый ответ! Я бы на счет овчинк поспорил, но нет вермени на это. Такая штука очень удобна на этапе разработки во многих случаях, да - если много ветвлений по доступам - возможно и не очень, но такое далеко не во всех проектах, в общем ладно.
Я работаю в проекте где подобное есть
А как это реалезовано не используя замыкание? Если не секрет.
урл /controllerName/actionName и он исходя из такого урла вызывает соответсвующий экшен контроллера?
Не уж то никто такого не делал?
Когда-нибудь ты захочешь использовать именованные маршруты или рут миддлвары и обнаружишь
Да, понадобилось использовать событие - beforeAction, и как выяснилось это тоже не работает из-за этого моего роута с анонимной функцией, зачем таковые тогда нужны если при них ничего не работает, и главный вопрос - как сделать такое: указываешь Ларавелу в урл /controllerName/actionName и он исходя из такого урла вызывает соответсвующий экшен контроллера? Или это невозможно в Ларавел без потери его фунциональности? Если да то оочень странно, так как это очень удобно и в yii это прям из коробки идет.
Если ты думал, что объект Маршрут бежит по стеку
Я ничего не думал, я искал метод получания имени контроллера при правеле маршрута который я указал. Не нашел, решил спросить у опытных в Ларавел, но ответа пока не получил.
То есть городишь своё
Ну почему свое? Если это не коректное правило роута, то как тогда подобное сделать корректно? А оно бывает нужно и очень удобно, не верю что в средних и выше проектах, где экшинов за сотню переваливает пишут на каждый - статический маршрут, создавая при этом простыню, в которой потом черт ногу сломит!
В yii это идет из коробки, и при этом система фреймворка всегда может тебе сообщить имя контроллера и экшена.
Что ты хотел получить в качестве имени, когда использовал замыкание
Я хочу получить имя контроллера и акшена, система же знает какой котнроллер и акшен она запустила, просто это надо делать видимо не через роут, так как функции ларавела просто парсят строку из статического роута - параметр 'BaseController@routeInfo', но если роут в виде правила, то такое уже не работает. Я пытаюсь найти метод которые система выдает уже после обработки маршрута и вызова конкретного акшена, в этот момент она же знает уже все и может сообщить это.
Фактически, ты отказался от стандартной маршрутизации, что-то городишь своё.
не свое, а подибие правила которое в yii идет из коробки, я много проработал на yii и скажу что такие правила очень удобны! Избавляют от простыней в роутере.
Инстанс! Он возвращает указатель на объект контроллера
я вкурсе что такое инстанс , не первый год как программист
у меня код 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}, просто брать с урла - не вариант, ну точнее можно но это точно будет не элегантное решение, так как сделана для сеошников автозамена урлов на вбитые из админки.
в апи есть метод получения контроллера https://laravel.com/api/5.8/Illuminate/ … Controller, но он не работает, там баг - ругается на mb_strpos, на гитхабе писали про это - https://github.com/laravel/framework/issues/20507, но как понял так и не пофиксили
Что значит "родительский контроллер"
есть FrontController, от него наследуются все контроллеры которые генерят фронтСтраницы, мне нужно на страницу в зависимости от имени контроллера и экшена подтягивать метатеги, для этого в FrontController до рендера должна вызватся функция которая на основании текущего контроллера и экшена вытянет из базы нужные метатеги, в yii это делается очень просто, а здесь не могу найти как получить имя контроллера и экшена, пытался через роуты это сделать, но по ходу не выйдет, должен же быть способ получания имени экшина и контроллера...
Route::currentRouteName()
это возвращает null
Route::getCurrentRoute() - это работает, но оно выдает общее правило которое сработало, а нужно текущее значение в этом правиле, вообще мне нужно идентифицировать вызванный action+controller
Всем привет, как в 5.8 получить в родительском контроллере текущий роут или контроллер? Гугл выдает много способов, но ни один не работает, то краш, то выдает не то что нужно.
админского доступа к серваку у меня нет, надо админа просить, какой именно файл конфига нужен? а то я хз как сервак устроен
а что смотреть? DOCUMENT_ROOT норм выводит
Всем привет. На локалке стоит apache, я файлы представлений храню в не стандартной директории, потому в конфиге пишу
'paths' => [ resource_path('views'), base_path('my/path') ]
Все работает. На продакшине стоит nginx, там это почему то не работает и laravel ищет файлы представлений в стандартной директории. Может кто знает как это поправить? Версия laravel - 5.8
Страницы 1