Как создать файл роутера для компонента joomla. Я использую Sef
URL в частности
У меня возникла та же проблема, и после того, как я перебрался в Интернете и только когда-либо сталкивался с ответами, подобными тем, которые мы видели здесь («см. Документацию»), что, на мой взгляд, действительно бесполезно и из всей документации эта страница является наиболее бесполезной.
Во всяком случае, я сначала отказался от «компонентного маршрутизатора», я мог заставить его легко работать для построения маршрутов, но обнаружил, что он ничего не будет анализировать, и без того, чтобы оба работали, это было бессмысленно продолжать.
В конце концов я решил пойти по пути к плагину, и нашел этот действительно хороший плагин. Вот от Даниэль Кальвиньо Санчес.
Затем я, наконец, столкнулся с некоторыми Joomla документация здесь это прекрасно и приведет вас именно туда, куда вам нужно идти.
Лично я считаю, что роутеру joomla нужно много работать, и я видел множество идей от людей, желающих его обновить. Я обнаружил, что использование плагина, в конце концов, было самым простым путем и лучшим решением во всем.
Я был бы рад обсудить с кем-либо вопрос о том, почему мой компонентный маршрутизатор не будет вызывать метод синтаксического анализа, как если бы он действительно работал, это был бы мой первый выбор.
Надеюсь это поможет.
К сожалению, в документации не было способа зарегистрировать мой маршрутизатор, поэтому я нашел альтернативное решение.
Router.php на самом деле Joomla\CMS\Router\SiteRouter
Вы можете использовать $this
переменная, даже если вы думаете, что вы не в классе.
Это можно проверить, выполнив var_dump($this)
Есть два метода, которые можно использовать.
$this->attachBuildRule(function(){
// build rule code
});
$this->attachParseRule(function(){
// parse rule code
});
Если вы используете объект, реализующий RouterInterface, обратные вызовы следующие
$this->attachBuildRule([$myRouter, 'build']);
$this->attachParseRule([$myRouter, 'parse']);
Методы ожидают вызова и ЭТАПА, см. Router::PROCESS_*
константы в пространстве имен Joomla\CMS\Router
Если вы используете PHPStorm, вы можете написать следующий код для помощи:
/**
* @var $this Joomla\CMS\Router\SiteRouter
*/
Проверьте это документация .
Он очень точно описывает, как создать маршрут и как работает маршрутизация в Joomla.
Также проверьте com_content/router.php
В качестве примера