Отменить удаление параметра из URL

Я пишу компонент с двумя представлениями - представление списка и представление статьи.

В представлении списка создаются ссылки для каждой статьи следующим образом: $ text является переменной, которую я хочу в URL.

<?php echo JRoute::_("index.php?Itemid=103&testvar=".strtolower($text)); ?>

т.е. http://www.test.com/test - это страница списка и я хочу http://www.test.com/test/text как статью

103 - это идентификатор элемента меню, где находится компонент. Это настроено на представление списка.

Мой маршрутизатор содержит следующий код:

if(isset($query['testvar']))
    {        
     $segments[] = $query['testvar'];
     unset($query['testvar']);

    };

Это создает следующий URL-адрес: http://www.test.com/test/text?testvar=text

unset($query['testvar']);, похоже, не работает для удаления ?testvar=text. Все остальное работает должным образом.

Обходной путь будет <?php echo JRoute::_("index.php?Itemid=103")."/".strtolower($text); ?> - но это кажется взломанным.

Любые идеи?

2 голоса | спросил Richard B 6 TueEurope/Moscow2016-12-06T15:39:22+03:00Europe/Moscow12bEurope/MoscowTue, 06 Dec 2016 15:39:22 +0300 2016, 15:39:22

1 ответ


0

Предполагая, что вы можете иметь только один вид списка, тогда ваша функция BuildRoute должна иметь максимум 1 сегмент (который является псевдонимом статьи ). Вы должны отключить все остальные сегменты (попробуйте сделать print_r, чтобы увидеть, что вы должны отменить.

В вашей функции ParseRoute вы проверяете количество сегментов и возвращаете либо представление списка, либо представление статьи. Вот как это сделать:

if (count($segments) == '0'){ //it's a list view
    `return array('option'=>'com_yourcomponent', 'view'=>'list', 'Itemid'=>[the item id of your choice]);`
else //it's an article view
    `return array('option'=>'com_yourcomponent', 'view'=>'article', 'testvar' => $segments[0], 'Itemid'=>[the item id of your choice]);`
ответил itoctopus 6 TueEurope/Moscow2016-12-06T16:50:43+03:00Europe/Moscow12bEurope/MoscowTue, 06 Dec 2016 16:50:43 +0300 2016, 16:50:43

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132