0 Пользователей и 1 Гость просматривают эту тему.
  • 4 Ответов
  • 636 Просмотров
*

interregional

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Добрый день!

Подскажите пожалуйста, как сделать роутинг для профилей юзеров.
У меня есть компонент, он у меня выбран главной страницей, есть view "profile", и view в парсере всегда первый т.е. по ссылке: "сайт.ру/profile" открывается как раз таки профиль.

Вот мне нужно расширить этот роутинг чтобы по ссылке: "сайт.ру/profile/логин" отрывался уже другой пользователь.
Другими словами чтобы вариации:
index.php?option=com_component&view=profile&task=some&id=111&login=Super User
index.php?option=com_component&view=profile&login=Super User

Были эквивалентны:
/profile/Super User
« Последнее редактирование: 10.04.2019, 07:47:36 от interregional »
*

sivers

  • Живу я здесь
  • 2464
  • 335 / 0
Re: routing в компоненте для соц сетей
« Ответ #1 : 10.04.2019, 07:54:35 »
скидывайте ваш роутер - посмотрю. Только вот

Другими словами чтобы вариации:
index.php?option=com_component&view=profile&task=some&id=111&login=Super User
index.php?option=com_component&view=profile&login=Super User

Были эквивалентны:
/profile/Super User

во что же должен парситься /profile/Super User? в первый или второй набор параметров?
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

interregional

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Re: routing в компоненте для соц сетей
« Ответ #2 : 10.04.2019, 08:27:54 »
Собственно оно у меня вроде как получилось...
Код
public function build(&$query)
{
$segments = array();
$view     = null;

if (isset($query['task']))
{
$taskParts  = explode('.', $query['task']);
$segments[] = implode('/', $taskParts);
$view       = $taskParts[0];
unset($query['task']);
}

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

unset($query['view']);
}

if (isset($query['id']))
{
if ($view !== null)
{
$segments[] = $query['id'];
}
else
{
$segments[] = $query['id'];
}

unset($query['id']);
}

if (isset($query['login']))
{
if ($view !== null)
{
$segments[] = $query['login'];
}
else
{
$segments[] = $query['login'];
}

unset($query['login']);
}

return $segments;
}

/**
* Parse method for URLs
* This method is meant to transform the human readable URL back into
* query parameters. It is only executed when SEF mode is switched on.
*
* @param   array  &$segments  The segments of the URL to parse.
*
* @return  array  The URL attributes to be used by the application.
*
* @since   3.3
*/
public function parse(&$segments)
{
$vars = array();

// View is always the first element of the array
$vars['view'] = array_shift($segments);
$model        = CabinetHelpersCabinet::getModel($vars['view']);

while (!empty($segments))
{
$segment = array_pop($segments);

// If it's the ID, let's put on the request

if ($vars['view'] == 'profile') {
$vars['login'] = $segment;
echo $segment;
}
else {
if (is_numeric($segment))
{
$vars['id'] = $segment;
}
else
{
$vars['task'] = $vars['view'] . '.' . $segment;
}
}
}

return $vars;
}

Но теперь я чувствую себя извращенцем, ибо чую что что-то тут не так сделал
*

sivers

  • Живу я здесь
  • 2464
  • 335 / 0
Re: routing в компоненте для соц сетей
« Ответ #4 : 10.04.2019, 09:01:01 »
Надергано из примеров? )

Так-то обычно говорят "лишь бы работало". Но билдер у вас будет дублить view при передаче task, а парсер... ну, если работает, то ладно )
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Загрузка и сохранение изображения в компоненте

Автор GuDeVic

Ответов: 16
Просмотров: 1621
Последний ответ 09.04.2018, 08:48:40
от averkiev
Удаление в самописном компоненте компоненте

Автор phpCoder

Ответов: 8
Просмотров: 1035
Последний ответ 25.11.2016, 09:09:56
от phpCoder
Как в компоненте Backend получить чистый экран без системного джумловского меню ?

Автор tm2010

Ответов: 30
Просмотров: 2028
Последний ответ 10.02.2016, 19:34:41
от Aleks.Denezh
Создание динамических полей в своем компоненте

Автор NeuroZ

Ответов: 14
Просмотров: 1462
Последний ответ 18.08.2015, 11:17:59
от b2z
Обработка данных в компоненте перед сохранением

Автор ipservice

Ответов: 2
Просмотров: 1197
Последний ответ 27.07.2015, 12:46:01
от ipservice