Как создать роутер для компонента в Joomla?

Как создать файл роутера для компонента joomla. Я использую Sef
URL в частности

4

Решение

У меня возникла та же проблема, и после того, как я перебрался в Интернете и только когда-либо сталкивался с ответами, подобными тем, которые мы видели здесь («см. Документацию»), что, на мой взгляд, действительно бесполезно и из всей документации эта страница является наиболее бесполезной.

Во всяком случае, я сначала отказался от «компонентного маршрутизатора», я мог заставить его легко работать для построения маршрутов, но обнаружил, что он ничего не будет анализировать, и без того, чтобы оба работали, это было бессмысленно продолжать.

В конце концов я решил пойти по пути к плагину, и нашел этот действительно хороший плагин. Вот от Даниэль Кальвиньо Санчес.

Затем я, наконец, столкнулся с некоторыми Joomla документация здесь это прекрасно и приведет вас именно туда, куда вам нужно идти.

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

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

Надеюсь это поможет.

1

Другие решения

К сожалению, в документации не было способа зарегистрировать мой маршрутизатор, поэтому я нашел альтернативное решение.

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
*/
1

Проверьте это документация .

Он очень точно описывает, как создать маршрут и как работает маршрутизация в Joomla.

Также проверьте com_content/router.php В качестве примера

0
По вопросам рекламы [email protected]