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

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

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

stincv

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

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

robert

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

SmokerMan

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

Septdir

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

robert

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

Septdir

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

robert

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

stincv

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

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

Septdir

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

sdi_68

  • Новичок
  • 9
  • 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
}
}


Вроде как работает :). Может кто-нибудь предложит лучший вариант решения....
*

alexy.74

  • Осваиваюсь на форуме
  • 25
  • 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
}
}


Вроде как работает :). Может кто-нибудь предложит лучший вариант решения....

а эта функция processQuery где расположена и после чего ее вставлять?
*

sdi_68

  • Новичок
  • 9
  • 0 / 0
в том же файле
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Убрать из модуля новостей ссылку на статью, на которой выводится модуль

Автор zeus07

Ответов: 3
Просмотров: 722
Последний ответ 08.11.2023, 21:17:26
от GrayAn
Не работает canonical

Автор Zegeberg

Ответов: 16
Просмотров: 617
Последний ответ 25.09.2023, 17:28:04
от web1
Некорректно работает Яндекс Метрика из-за mootools

Автор web_signal

Ответов: 4
Просмотров: 876
Последний ответ 21.06.2023, 23:25:14
от sivers
Модуль для опросов Advanced Poll не работает

Автор Escander

Ответов: 15
Просмотров: 1428
Последний ответ 02.06.2023, 20:10:22
от kzalmatuy1
Изменение отображения модуля от разрешения экрана

Автор mag_num83

Ответов: 5
Просмотров: 523
Последний ответ 17.05.2023, 09:35:23
от Театрал