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

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

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

stincv

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

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

robert

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

SmokerMan

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

Septdir

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

robert

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

Septdir

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

robert

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

stincv

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

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

Septdir

  • Живу я здесь
  • 3099
  • 151 / 3
Именно так думал ТС)
Из всего вышесказанного я понял, что sql_filter вообще не работает в данный момент. Не пойму почему в некоторых мануалах в сети приводят пример с sql_filter...
Я думаю он вполне работает. Просто кто вам вообще сказал что там AJAX в маунале и доках про AJAX ни слова
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
Мои Контакты | Мой 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
в том же файле
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Почему не работает $

Автор Mick_20

Ответов: 2
Просмотров: 105
Последний ответ 12.08.2019, 11:28:08
от draff
Не работает подсветка текста в поиске

Автор uamobile

Ответов: 0
Просмотров: 92
Последний ответ 30.07.2019, 12:44:06
от uamobile
Не работает выпадающий список Chosen в IE 11

Автор zeus07

Ответов: 3
Просмотров: 88
Последний ответ 24.07.2019, 13:48:28
от Webster
Как определить стиль модуля шаблона если написано "Унаследовано"?

Автор artbavial

Ответов: 1
Просмотров: 72
Последний ответ 22.07.2019, 13:14:21
от sivers
Quick Index не работает на главной

Автор polezniy

Ответов: 1
Просмотров: 86
Последний ответ 08.07.2019, 01:42:54
от polezniy