Redirect-URL falsch aufgelöst, wenn SEO aktiviert

  • Hallo,


    Ich habe bei meiner eigenen Komponente ein Problem mit dem Routing. Die eine Komponent-View ist ein Formular. Bei erfolgreichem Übermitteln des Formulars, oder wenn der "Cancel"-Button gedrückt wird, soll der Benutzer wieder zur leeren Formularansicht weitergeleitet werden und eine Nachricht in der Joomla-Messagebox angezeigt bekommen.
    Nun habe ich das Problem, dass die URL nach dem Redirect falsch aufgelöst wird, falls "Suchmaschinenfreundliche URL" eingestellt ist.


    Ohne "Suchmaschinenfreundliche URL" sieht die URL vor und nach dem absenden des Formulars so aus:

    /index.php?option=com_attlist&view=meldungen&Itemid=232


    Mit "Suchmaschinenfreundliche URL" aktiviert, sieht die URL so aus:
    /index.php/anwesenheitsliste

    und nach absenden und redirect des Formulars, sieht die URL so aus:
    /index.php/anwesenheitsliste/meldungform


    Der Code, der den redirect im entsprechenden controller der View generiert sieht folgendermassen aus:

    Code
    1. $this->setMessage(JText::_('COM_ATTLIST_ITEM_SAVED_SUCCESSFULLY'), 'message');
    2. $menu = JFactory::getApplication()->getMenu();
    3. $item = $menu->getActive();
    4. $url = (empty($item->link) ? 'index.php?option=com_attlist&view=meldungen' : $item->link);
    5. $this->setRedirect(JRoute::_($url, false));


    Warum hängt Joomla bei aktivierter "Suchmaschinenfreundliche URL" dieses "/meldungform" an die URL nach dem Redirect?

    Was muss ich ändern, dass die URL auch nach dem Redirect wieder "/index.php/anwesenheitsliste" heisst?

  • Ich konnte das Problem inzwischen lösen. Ich musste diesen Code

    Code
    1. $this->setMessage(JText::_('COM_ATTLIST_ITEM_SAVED_SUCCESSFULLY'), 'message');
    2. $menu = JFactory::getApplication()->getMenu();
    3. $item = $menu->getActive();
    4. $url = (empty($item->link) ? 'index.php?option=com_attlist&view=meldungform' : $item->link);
    5. $this->setRedirect(JRoute::_($url, false));

    mit diesem Code ersetzen

    (das view=meldungen war natürlich auch falsch und musste durch view=meldungform ersetzt werden)


    Das vorgehen des Joomla-Routers ist mir aber dennoch nicht klar. Warum muss man bei aktiviertem SEF den view parameter im request weglassen, wenn man dafür den Itemid parameter setzt?
    Das anvisierte Menü-Element ist doch eine Komponenten-View vom typ meldungform, das sollte doch JRoute kapieren, zumal es ohne aktiviertem SEF funktioniert...


    Wäre toll, wenn mir dieses Verhalten von JRoute jemand erklären könnte, sodass ich nächstes Mal nicht wieder den gleichen Fehler mache.


    LG