Форум русской поддержки Joomla!® CMS
04.12.2016, 20:18:07 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Роутинг компонентов VS переменные в $_get

 (Прочитано 188 раз)
0 Пользователей и 1 Гость смотрят эту тему.
NeuroZ
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 129


Разработка сайтов и J! расширений под ключ


« : 30.06.2016, 12:32:21 »

http://inet-reklama.com/blog/joomla/routing-v-joomla-jroute.html - это я читал, это я в курсе Azn

К примеру у меня есть линк index.php?option=mycom&view=catalog&layout=first&var1=one
Роутинг должен циклом формировать ЧПУ из всех переменных которые приходят в $_GET. Т.е. если их 10, то буедт .../var1/var2/.../var10
Но при этом в роутере я делаю unset($query[$i]) чтобы эти же переменные не дублировались в адресной строке .../var1/var2/.../var10?var1=one&var2=two&...var10=ten
Но на результирующей странице мне надо в view.html.php использовать эти самые переменные из $_GET, но т.к. мы ранее сделали unset query, то массив $_GET пуст...
Как быть?
Записан
robert
Профи
********

Репутация: +343/-11
Offline Offline

Пол: Мужской
Сообщений: 3572


« Ответ #1 : 30.06.2016, 12:59:54 »

$_GET['var1'] пуст, но var1 же есть в URL'е, его и используйте.
Записан
NeuroZ
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 129


Разработка сайтов и J! расширений под ключ


« Ответ #2 : 30.06.2016, 13:03:56 »

$_GET['var1'] пуст, но var1 же есть в URL'е, его и используйте.
А смысл? У него же нет значения.
Там просто красивый var1, а не var1=val1
Записан
robert
Профи
********

Репутация: +343/-11
Offline Offline

Пол: Мужской
Сообщений: 3572


« Ответ #3 : 30.06.2016, 13:12:07 »

А смысл? У него же нет значения.
Там просто красивый var1, а не var1=val1
Тогда зачем оно нужно? Не красивее писать site.ru/blahblahblah/ вместо site.ru/blahblahblah/var1/var2/.../var10/?
Вы просто не понимаете, что делаете: красивость - хорошо, но значения должны быть, иначе как система найдет нужную страницу?
Записан
NeuroZ
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 129


Разработка сайтов и J! расширений под ключ


« Ответ #4 : 30.06.2016, 13:26:41 »

Тогда зачем оно нужно? Не красивее писать site.ru/blahblahblah/ вместо site.ru/blahblahblah/var1/var2/.../var10/?
Вы просто не понимаете, что делаете: красивость - хорошо, но значения должны быть, иначе как система найдет нужную страницу?
Да, извиняюсь, я напутал в объяснениях)) Но суть не меняется)
У меня действительно в url идут значения, а не ключи. НО мне же надо сделать универсальный компонент? Как я пойму из роутера какое значение к какой переменной относится?
Мне нужна именно пара ключ=значение.
Кроме того при выключенному роутинге - код завязанный на адресную строку - сразу перестанет работать.
Записан
robert
Профи
********

Репутация: +343/-11
Offline Offline

Пол: Мужской
Сообщений: 3572


« Ответ #5 : 30.06.2016, 13:33:17 »

В router всегда в паре должны быть функции build() и parse(), одна делает "красивый" URL из "некрасивого", другая - все наоборот. Такое впечатление, что у вас нет второй функции.
Записан
NeuroZ
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 129


Разработка сайтов и J! расширений под ключ


« Ответ #6 : 30.06.2016, 13:36:55 »

Цитировать
В router всегда в паре должны быть функции build() и parse(), одна делает "красивый" URL из "некрасивого", другая - все наоборот. Такое впечатление, что у вас нет второй функции.
Всё есть. Просто вы предлагаете привязаться (брать значения) из адресной строки, вместо $_GET. Как? Парсить ее? Если ее парсить, то при выключенном ЧПУ парсить будет нечего.

Решил вопрос ходом конем - принимаю переменные не из $_GET, а из $_REQUEST
НО возникла другая проблема... почему-то ключ layout переименовывается в task, а переменные типа typeID просто в id. - это проблема если надо за один переход передать 2 переменных например typeID и modelID
Записан
NeuroZ
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 129


Разработка сайтов и J! расширений под ключ


« Ответ #7 : 30.06.2016, 13:38:49 »

у нас в URL строка символов разделенная "/", а не пары ключ=значение. Меня интересует именно пара, иначе как я узнаю к какому ключу относится значение (используя только url строку)?
Записан
robert
Профи
********

Репутация: +343/-11
Offline Offline

Пол: Мужской
Сообщений: 3572


« Ответ #8 : 30.06.2016, 13:43:02 »

Всё есть.
Если бы все было (или вы знали, что делаете), вы бы уже не задали этот вопрос. Предлагаю глубже изучать принцип работы router, можно взять пример из стандартного com_content.
Записан
NeuroZ
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 129


Разработка сайтов и J! расширений под ключ


« Ответ #9 : 30.06.2016, 13:49:45 »

Если бы все было (или вы знали, что делаете), вы бы уже не задали этот вопрос. Предлагаю глубже изучать принцип работы router, можно взять пример из стандартного com_content.
Не он есть, но нашел дырку в нем, он любые числовые значения в id пихает (моя ошибка).
В любом случае, вариант с разбором url никак не подходит. Или что вы конкретно предлагаете? Как разбирать url ?
Записан
NeuroZ
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 129


Разработка сайтов и J! расширений под ключ


« Ответ #10 : 30.06.2016, 13:57:50 »

в $segments приходит нумерованный массив, а мне нужен ассоциативный. Как??
Записан
Aleks.Denezh
Практически профи
*******

Репутация: +372/-4
Offline Offline

Пол: Мужской
Сообщений: 2762



« Ответ #11 : 30.06.2016, 14:41:12 »

НО мне же надо сделать универсальный компонент? Как я пойму из роутера какое значение к какой переменной относится?
А никак вы не поймете и тем более скрипт не поймет! Разве что он превратится в скайнет, тогда может и поймет!
Универсальности у вас не получится! Под каждый случай нужно делать свои переменные! По другому увы никак! А если для одного случая переменные динамичны, то есть количество их меняется, тот тут вообще беда.. либо оставльять так:
site.ru/category/1-product.html?var1=1&var2=2&..&varN=n
либо делать что то типа такого:
site.ru/category/1-product/var1=1/var2=2/../varN=n/ или такого site.ru/category/1-product/var1=1;var2=2;..;varN=n/ ну или как вам нравится! По другому никак!
Записан
NeuroZ
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 129


Разработка сайтов и J! расширений под ключ


« Ответ #12 : 30.06.2016, 15:10:24 »

Цитировать
оставльять так:
site.ru/category/1-product.html?var1=1&var2=2&..&varN=n
либо делать что то типа такого:
site.ru/category/1-product/var1=1/var2=2/../varN=n/ или такого site.ru/category/1-product/var1=1;var2=2;..;varN=n/ ну или как вам нравится! По другому никак!
Очень жаль... как раз вот и хотел уйти от первого варианта, но не использовать ключ=значение как в примере ниже...
Ну раз никак, значит оставлю как есть..
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet