Не знаю чем тебе помочь. Ты сам провоцируешь ошибку
Забудь за мой код, мне нужно чтобы урл site.ru/aaa/bbb вызывал акшн bbb у контроллера aaa, чтобы это работало без явного вписывания маршрута aaa/bbb в файл маршрутов, чтобы был какойто маршрут-формула которая бы обрабатывала такие урлы. Такое сделать возможно в ларавел без потери функциональности?
]]>Понимаешь о чём я? Видимо нет
Умничание не делает человеку чести...
Ларавелевский пайплайн с мидлварами уже не участвует в нём
Тоесть все же нельзя на Ларавеле сделать эту удобную штуку без потери функциональности. Пайплайн не очень удачный значит в Ларавел, признайте это!:)
]]>А как это реалезовано не используя замыкание? Если не секрет.
Во-первых, я не говорил, что замыкания там нет (хотя его там правда нет). Во-вторых, без разницы замыкание там или ссылка на экшен. Важно что с т.з. ларавель у тебя только один маршрут, который берёт на себя все запросы, что не были подобраны до него. Уже внутри этого дефолтового экшена происходят какие-то вычисления на базе URL и управление передаётся в другие контроллеры. То есть самописная маршрутизация поверх стандартной. Ларавелевский пайплайн с мидлварами уже не участвует в нём. Понимаешь о чём я? Видимо нет, т.к. ты мыслишь категориями Yii.
]]>Итого: овчинка выделки не стоит
Спасибо за развернутый ответ! Я бы на счет овчинк поспорил, но нет вермени на это. Такая штука очень удобна на этапе разработки во многих случаях, да - если много ветвлений по доступам - возможно и не очень, но такое далеко не во всех проектах, в общем ладно.
Я работаю в проекте где подобное есть
А как это реалезовано не используя замыкание? Если не секрет.
]]>Не уж то никто такого не делал?
Я работаю в проекте где подобное есть, но от такого подхода уже отказались. Оно существует как легаси, мы вынуждены эту версию поддерживать пока она не будет полностью вытеснена новой.
Почему было когда-то сделано: якобы для оптимизации. На самом деле нет, это не оптимизация, т.к. кешированные маршруты работают быстро, а "динамический роутинг" в принципе не кешируется. Другая причина была в якобы простоте поиска экшенов. По мере роста оказалось что минусы перевешивают один хилый плюс.
Причина нелюбви: неудобство в организации роут мидлваре. Чем больше эндпоинтов, тем важнее становятся мидлвары доступа. Когда у тебя перед глазами классический ларавелевский файл маршрутов с группами, то вся логика доступа перед глазами. Да, *ля, он большой, очень большой. Но он читабельный, понятный. А "динамический роутинг" заставляет тебя помещать контроль доступа в контроллер и чтобы проверить его надо в каждый контроллер залезть.
Много дублирующего кода. Изменение в политике доступа приводит к необходимости переписывать массу файлов.
Итого: овчинка выделки не стоит. Экономия букв это хреновая оптимизация.
]]>урл /controllerName/actionName и он исходя из такого урла вызывает соответсвующий экшен контроллера?
Не уж то никто такого не делал?
]]>Когда-нибудь ты захочешь использовать именованные маршруты или рут миддлвары и обнаружишь
Да, понадобилось использовать событие - beforeAction, и как выяснилось это тоже не работает из-за этого моего роута с анонимной функцией, зачем таковые тогда нужны если при них ничего не работает, и главный вопрос - как сделать такое: указываешь Ларавелу в урл /controllerName/actionName и он исходя из такого урла вызывает соответсвующий экшен контроллера? Или это невозможно в Ларавел без потери его фунциональности? Если да то оочень странно, так как это очень удобно и в yii это прям из коробки идет.
]]>Если ты думал, что объект Маршрут бежит по стеку
Я ничего не думал, я искал метод получания имени контроллера при правеле маршрута который я указал. Не нашел, решил спросить у опытных в Ларавел, но ответа пока не получил.
То есть городишь своё
Ну почему свое? Если это не коректное правило роута, то как тогда подобное сделать корректно? А оно бывает нужно и очень удобно, не верю что в средних и выше проектах, где экшинов за сотню переваливает пишут на каждый - статический маршрут, создавая при этом простыню, в которой потом черт ногу сломит!
В yii это идет из коробки, и при этом система фреймворка всегда может тебе сообщить имя контроллера и экшена.
Нет. Она знает, что текущему маргруту сопоставлено замыкание. Если ты думал, что объект Маршрут бежит по стеку вызовов и проверяет не является ли нечто контроллером: знай, это не так )
- не свое, а подибие правила которое в yii идет из коробки
То есть городишь своё. Ты повелитель сего. Отвелл снимает с себя ответственность.
]]>Что ты хотел получить в качестве имени, когда использовал замыкание
Я хочу получить имя контроллера и акшена, система же знает какой котнроллер и акшен она запустила, просто это надо делать видимо не через роут, так как функции ларавела просто парсят строку из статического роута - параметр 'BaseController@routeInfo', но если роут в виде правила, то такое уже не работает. Я пытаюсь найти метод которые система выдает уже после обработки маршрута и вызова конкретного акшена, в этот момент она же знает уже все и может сообщить это.
Фактически, ты отказался от стандартной маршрутизации, что-то городишь своё.
не свое, а подибие правила которое в yii идет из коробки, я много проработал на yii и скажу что такие правила очень удобны! Избавляют от простыней в роутере.
]]>