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

stincv

  • Новичок
  • 8
  • 2 / 0
Доброго дня.

Возникла проблема с созданием зависимых полей для модуля средствами стандартной документации:
https://docs.joomla.org/SQL_form_field_type

Если подробнее, в модуле я добавил для поля:
Код
<field name="catid"
    type="sql"
    label="категория"
    sql_select="*"
    sql_from="#__categories"
    sql_order="id ASC"
    sql_group="title"
    sql_where="parent_id=46"
    key_field="id"
    value_field="title"
/>

<field name="people"
    type="sql"
    label="материал"
    sql_select="*"
    sql_from="#__content"
    sql_filter="catid"
    sql_group="title"
    value_field="title"
/>
В админке, в настройках модуля поля появились, по если выбрать в поле "catid" какую-либо категорию, то во втором поле ничего не меняется - все также отображаются все материалы из всех категорий. Даже не происходит AJAX запросов в консоли браузера, хотя по идее они и должны вызываться, чтобы обновить список значений второго поля.
Более того, если включить debug режим, то на странице редактирования модуля я вижу следующий дебаг по данным полям:

То есть видно, что для поля "people" формируется sql-запрос:
Код
SELECT *

  FROM lui_content

  GROUP BY title
и нигде нет упоминания про "WHERE catid = ", хотя в документации все четко описано.

У меня вопрос к сообществу, может кто-нибудь сталкивался с подобной проблемой? Почему не работает параметр sql_filter, может это я что-то делаю не так.

P.S.: Joomla 3.6.4
*

robert

  • Живу я здесь
  • 4256
  • 407 / 15
Даже не происходит AJAX запросов в консоли браузера, хотя по идее они и должны вызываться, чтобы обновить список значений второго поля.
А скрипт, который должен посылать AJAX-запрос, есть?
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

stincv

  • Новичок
  • 8
  • 2 / 0
А скрипт, который должен посылать AJAX-запрос, есть?

Откуда же я знаю - Joomla установлена из оф.пакета. Думаете они не добавляют туда скрипты, которые участвуют в процессах описанных в их документации? Если Вы знаете какой именно скрипт должен осуществлять AJAX, просьба сообщить, я поищу его.
*

robert

  • Живу я здесь
  • 4256
  • 407 / 15
Откуда же я знаю - Joomla установлена из оф.пакета. Думаете они не добавляют туда скрипты, которые участвуют в процессах описанных в их документации?
Насколько я знаю, из коробки - нет.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

SmokerMan

  • Гуру
  • 5293
  • 719 / 26
а с чего вы взяли что там AJAX запрос должен быть?
Цитировать
и нигде нет упоминания про "WHERE catid = ", хотя в документации все четко описано.
может он появиться только после сохранения параметров
*

Septdir

  • Живу я здесь
  • 2741
  • 133 / 3
  • JoomlaZen
Пишите свой тип поля, и не парьтесь, по идеи работать конечно должен, но. это же офф дока Joomla вареника что нибудь забыли. например onchange написать +
как верно сказано, скорее всего там просто нет AJAX
а чтобы проблем не было есть sql_default_
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
Мои Контакты | Мой GitHub | JoomlaZen
*

robert

  • Живу я здесь
  • 4256
  • 407 / 15
и нигде нет упоминания про "WHERE catid = ", хотя в документации все четко описано.
Это условие появится только тогда, когда параметр catid непустой и передан в $_REQUEST['filter'] или в сессию.
а чтобы проблем не было есть sql_default_
Не то - sql_default_ нельзя динамически менять, а ТС хочет, чтобы второй select менял значение в зависимости от первого.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

Septdir

  • Живу я здесь
  • 2741
  • 133 / 3
  • JoomlaZen
Не то - sql_default_ нельзя динамически менять, а ТС хочет, чтобы второй select менял значение в зависимости от первого.
Ну а если 0 ? оно то и нужно если в первом поле пусто.
« Последнее редактирование: 08.11.2016, 15:15:46 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
Мои Контакты | Мой GitHub | JoomlaZen
*

robert

  • Живу я здесь
  • 4256
  • 407 / 15
Ну а если 0 ? оно то и нужно если в первом поле пусто.
Будет
Код: sql
WHERE catid = 0
Может найти не то, что нужно или вообще ничего не найдет. Но это не относится к теме: ТС думал, что в офф.пакет уже включен динамическое изменение значения select AJAX'ом.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

stincv

  • Новичок
  • 8
  • 2 / 0
ТС думал, что в офф.пакет уже включен динамическое изменение значения select AJAX'ом.

Именно так думал ТС)
Из всего вышесказанного я понял, что sql_filter вообще не работает в данный момент. Не пойму почему в некоторых мануалах в сети приводят пример с sql_filter...
*

Septdir

  • Живу я здесь
  • 2741
  • 133 / 3
  • JoomlaZen
Именно так думал ТС)
Из всего вышесказанного я понял, что sql_filter вообще не работает в данный момент. Не пойму почему в некоторых мануалах в сети приводят пример с sql_filter...
Я думаю он вполне работает. Просто кто вам вообще сказал что там AJAX в маунале и доках про AJAX ни слова
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
Мои Контакты | Мой GitHub | JoomlaZen
*

sdi_68

  • Новичок
  • 1
  • 0 / 0
Столкнулся с той же проблемой. Посмотрел код ,действительно в Joomla сейчас нет поддержки для такого параметра. Решил доработкой файла .\libraries\joomla
\form\fields\sql.php
После строки
Код
$filters = isset($this->element['sql_filter'])? explode(',', $this->element['sql_filter']) : '';
Вставил
Код
					$curfrm = $this->form;
foreach($filters as $i => $v )
{
$filterval = $curfrm->getValue( $v, $group );
if (!is_null( $filterval ) )
$filters[$i] = $v.'='.$filterval;
}


В функцию processQuery внес следующие изменения
Код
		// Process the filters
if (is_array($filters))
{
$html_filters = JFactory::getApplication()->getUserStateFromRequest($this->context . '.filter', 'filter', array(), 'array');

foreach ($filters as $k => $value)
{
if (!empty($html_filters[$value]))
{
$escape = $db->quote($db->escape($html_filters[$value]), false);

$query->where("{$value} = {$escape}");
}
elseif (!empty($defaults[$value]))
{
$escape = $db->quote($db->escape($defaults[$value]), false);

$query->where("{$value} = {$escape}");
}
//  добавляем обработку XML параметра sql_filter BOF
else {
$query->where("{$value}");
}
//  добавляем обработку XML параметра sql_filter EOF
}
}


Вроде как работает :). Может кто-нибудь предложит лучший вариант решения....
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Помогите найти код модуля

Автор Serg34

Ответов: 3
Просмотров: 46
Последний ответ 03.12.2017, 20:17:13
от effrit
Не работает последняя версия 3.8 на OpenServere [РЕШЕНО]

Автор neogod

Ответов: 21
Просмотров: 272
Последний ответ 26.11.2017, 18:56:20
от neogod
При создании модуля - белый экран

Автор SuschnosT

Ответов: 9
Просмотров: 155
Последний ответ 24.11.2017, 16:08:31
от robert
Добавление модуля на страницах категорий/статей

Автор froggi3

Ответов: 3
Просмотров: 104
Последний ответ 24.11.2017, 09:36:12
от khan-alex
В браузере Chrom, не работает главное меню из якорных ссылок

Автор klipius

Ответов: 5
Просмотров: 106
Последний ответ 24.11.2017, 07:33:53
от klipius