Добавьте параметры запроса и создайте URL-адрес SEF

У нас есть пользовательский PHP-скрипт, который работает под JUMI для выполнения и отображения некоторых данных.

Пользовательский скрипт доступен для URL-адреса SEF, такого как

http://www.mysite.com/jumi-script

, который является перезаписанной версией

http://www.mysite.com/index.php?option=com_jumi&view=application&fileid=11&Itemid=271

Теперь мы хотели бы фильтровать данные, применяя такие параметры, как

category=mycat&place=myplace

как это

/index.php?option=com_jumi&view=application&fileid=11&Itemid=271&category=mycat&place=myplace

, и мы хотели бы получить URL-адрес SEF, подобный этому

/jumi-script/mycat/myplace

и обработать эти переменные в моем скрипте с помощью

$mycat = JFactory::getApplication()->input->post->get('category');

$myplace = JFactory::getApplication()->input->post->get('place');

Как мы это получаем? мы тестируем

$currentUrl =& JURI::getInstance();
$currentUrl->setVar( 'mycat', $catvalue );

, но мы теряем остальную часть строки запроса. Можно ли достичь вышеуказанного? Любое предложение?

Спасибо

2 голоса | спросил neting.it 8 +03002016-10-08T19:10:42+03:00312016bEurope/MoscowSat, 08 Oct 2016 19:10:42 +0300 2016, 19:10:42

2 ответа


1

Посмотрите на реализацию com_jumi маршрутизатора здесь https: //github. com /BonavalMultimedia /com_jumi /blob /master /com_jumi_bnvl /router.php для меня кажется, что он не обрабатывает дополнительные параметры, когда sef включен (см. функцию JumiParseRoute).

Вам нужно изменить эту функцию, чтобы проверить дополнительные параметры и добавить их в массив $vars, чтобы они были доступны с использованием JInput или JRequest, если вы находитесь на Joomla версии до 3.0

Чтобы проверить параметры, просто посмотрите, определены ли они в параметре $segments.

Чтобы узнать, есть ли у вас category, place или вам нужно определить свои собственные критерии или сохранить возможные значения в любом месте, где вы можете точно проверить, какое значение «тип» находится в каждом сегменте.

Пример : мои критерии заключаются в том, что URL-адреса всегда будут jumi /category /place. Тогда:

$vars['category'] = $segments[1];
$vars['place'] = $segments[2];

Конечно, вы должны проверить, что индексы $segment определены и выполняют все необходимые проверки.

Возможно, вы захотите создать URL-адреса SEF при создании маршрутов. Затем вы должны изменить функцию JumiBuildRoute, чтобы следовать вашим критериям.

Альтернатива редактированию кода

Если вы не хотите редактировать код маршрутизации компонента, используйте следующий URL:

http://www.mysite.com/jumi-script?category=mycat&place=myplace

, чтобы получить ваш скрипт. Теперь оба значения должны быть доступны через JInput или JRequest в старых версиях Joomla.

С уважением,

ответил Pep Lainez 19 +03002016-10-19T18:18:31+03:00312016bEurope/MoscowWed, 19 Oct 2016 18:18:31 +0300 2016, 18:18:31
0

Для вашего url /index.php?option=com_jumi&view=application&fileid=11&Itemid=271&category=mycat&place=myplace:

$JInput    = JFactory::getApplication()->input;
$myRequest = $JInput->getArray(array(
    'option'  =>'',
    'view'    =>'',
    'fileid'  =>'', 
    'Itemid'  =>'',
    'category'=>'',
    'place'   =>''
));

Или, если вы хотите фильтровать , введите:

$myRequest = $JInput->getArray(array(
    'option'  =>'word',
    'view'    =>'alnum',
    'fileid'  =>'int', 
    'Itemid'  =>'int',
    'category'=>'string',
    'place'   =>'string'
));

каждый вход будет возвращать значение в виде отфильтрованного типа или NULL, если нет значения.

ответил cwps 17 +03002016-10-17T13:11:13+03:00312016bEurope/MoscowMon, 17 Oct 2016 13:11:13 +0300 2016, 13:11:13

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

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

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