Комментарии 18
Где примеры с middleware?
В документации ))))))
В статье намного больше смысла чем в Вашем комментарии.
Не поленился ещё раз проверить, если статья про роутинг то и вопрос про middleware в роуторе, а не итерпритации(ActionFilter) в контроллере.


Во-первых, в статье нет смысла, так как это просто копи-паст документации с элементами комментариев.
Во-вторых, очень жаль что вы не поняли стёб.
В-третьих, если вам нужно использовать middleware в контексте роута, а документации нет - открываете исходный код и построчно вникаете в логику (именно так люди и делают, когда отсутствует документация). Здесь middleware это повторение laravel, поэтому если вы с ним работали, для вас не составит труда его использовать.
В данный момент они не используется и вся логика привычных middleware отдана на откуп экшен фильтрам.
Интересно вы конечно делаете (пытаетесь скрестить битрикс, ларавель и симфони). Статья ни о чем - вроде бы «переходите на новый роуминг и отказываетесь от urlrewrite.php», но ни слова как это подружить с компонентами, с Эрмитажем, да хоть просто со страницами. Ни слова что добавили урезанный до невозможности view(). Да, все это есть в документации, тогда для чего бессмысленная статья? Просто напишите еще один пост как скормили ИИ весь свой код чтобы она за вас написала документацию. Так ждал Битрикс Framework 2.0, но о нем ни слуху не духу. В общем, разработчики на битрикс, хотите что-то придумать и сделать обратную совместимость со старым роумингом, но в тоже время полностью отказаться от него - копайте кишки ядра (это возможно, у меня получилось, но костыли вам обеспечены)
Интересно вы конечно делаете (пытаетесь скрестить битрикс, ларавель и симфони).
Не обижайте Yii , он тоже хороший доннор для скрещивания :)
но ни слова как это подружить с компонентами, с Эрмитажем, да хоть просто со страницами. Ни слова что добавили урезанный до невозможности view(). Да, все это есть в документации, тогда для чего бессмысленная статья?
Статья про роутинг, а не про "всё на свете". Не переживайте, про работу с контроллерами статья будет.
(это возможно, у меня получилось, но костыли вам обеспечены)
Нельзя скрывать такое творчество от общественности, с нетерпеньем жду от вас статью с деталями ;)
Нельзя скрывать такое творчество от общественности, с нетерпеньем жду от вас статью с деталями ;)
Не времени чтобы писать статьи)) Вот костыльная реализация, которую можно доработать при желании. Но суть думаю понятна.
->get('/blog/{page}/', function (Route $route) {
$res = \Bitrix\Main\UrlRewriter::getList(
SITE_ID,
['QUERY' => '/blog/'],
['SORT' => 'ASC']
)[0];
$path = $res['PATH'];
$uri = new \Bitrix\Main\Web\Uri('/blog/');
parse_str($uri->getQuery(), $queryParams);
$GLOBALS['PAGEN_1'] = $route->getParameterValue('page');
if ($queryParams) {
$_SERVER["QUERY_STRING"] = Bitrix\Main\Web\Uri::urnEncode($uri->getQuery(), false);
foreach ($queryParams as $name => $value) {
$route->getParametersValues()->set($name, $value);
$_REQUEST[$name] = $value;
$_GET[$name] = $value;
}
}
$_SERVER["REAL_FILE_PATH"] = $path;
include_once $_SERVER['DOCUMENT_ROOT'] . $path;
})А чем вас стандартный PublicPageController не устроил? :)
class PublicPageController
{
protected $path;
public function __construct($path)
{
$this->path = $path;
}
public function __invoke()
{
}
/**
* @return mixed
*/
public function getPath()
{
return $this->path;
}
}Серьезно ?:)))))) Думаю отвечать не нужно чем не устроил - код говорит за меня)
если статья про роутинг то и вопрос про middleware в роуторе, а не итерпритации(ActionFilter) в контроллере.
@ispitsyn оставлю это здесь

Ещё бы route() учитывал правила из where(), цены бы ему не было.
А то возможность сделать вот так - есть, согласно документации:$routes->any('/test/{test}/', function ($test) {
die(var_dump('it work'));
})
->where('test', '.*')
->name('test');
Но при этом\Bitrix\Main\Application::getInstance()->getRouter()->route('test', ['test' => 'a/b/c/d'])
Возвращает /test/a%2Fb%2Fc%2Fd/
Довольно странный пример, потому что очень похоже что вместо отдельных роутов вы хотите сделать какой-то один динамический. Ну и в целом ваша «проблема» решается использованием разделителя между abcd, который поддерживается URL строкой
Возможно, однако правила ->where('test', '.*') это часть официальной документации, а не какая-то моя выдумка.
Разделитель поддерживается любой другой, но SEO и руководство требует слэши.
Информация
- Сайт
- www.bitrix24.ru
- Дата регистрации
- Дата основания
- 1998
- Численность
- 501–1 000 человек
- Местоположение
- Россия
Роутинг в BitrixFramework: учимся управлять маршрутизацией запросов