3

I want to use the new router classes to implement SEF stuff. I still struggle to get it to work.

I have a view which can show categories. So this view is called categories. If you click a category, you see the categories view again. Despite the name of the view and that there is just one view, this is similar to what com_content is doing with the category view.

Here is my code for the router constructor:

$categories = new JComponentRouterViewconfiguration('categories');
$categories->setKey('catid');
$categories->setNestable();
$this->registerView($categories);

That gives me an endless loop if I try to build routes for the categories view.

The class Joomla\CMS\Component\Router\RouterView\StandardRules seems to cause the issue here. Since my view has no parent, it can't have children. So the for (i = 0; i < .....) in line 237 the i variable is counted and down endlessly.

else
{
    $i--;
    $found2 = false;
}

if (count($views[$view]->children))
{
    $found = true;
}

I'm pretty sure the standard Joomla code supports a single nested view. But how? I'm very thankful for a little hint.

  • I'm looking at this and struggling as well! I did come across this post which may help. You might try copying the getCategorySegment and getCategoryId methods from the com_content code. I think with the old router it was a lot easier to debug your code. – Robbie Jackson Mar 30 '18 at 21:46
  • I created a copy of the original router and modified it so it works for me now. The ID-less routing is fine. But it does not feel right :( – Sven Bluege Mar 31 '18 at 5:35

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Browse other questions tagged or ask your own question.