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

denism300

  • Захожу иногда
  • 209
  • 5 / 0
По полям
« : 30.10.2018, 15:36:12 »
пишу расширение для VirtueMart 3, возникла потребность исключать некоторые категории из обработки.
для выбора этих некоторых категорий хочу в настройках компонента добавить поле, в котором можно их выбрать.
на данный момент есть мысль создать поле типа category, но возникает проблема, как туда передать категории из VM - не могу разобраться.
или же тип поля SQL, но возникает проблема выбора из таблицы названия категорий.
VM хранит названия категорий в таблице #__virtuemart_categories_(тут слаг текущего языка), например, для русского - #__virtuemart_categories_ru_ru
как бы для конкретного языка можно тупо сделать поле так:
Код
<field 
name="exCAT"
type="sql"
class="inputbox"
key_field="virtuemart_category_id"
value_field="category_name"
query="SELECT virtuemart_category_id, category_name FROM #__virtuemart_categories_ru_ru"
label="Выберите категории, которые нужно исключить"
description=""
multiple="true"
/>

но, тогда в случае, если у пользователя другой язык сайта, работать не будет. вопрос - как в данном типе поля выбирать из таблицы, которая соответствует текущему языка сайта?
*

NewUsers

  • Живу я здесь
  • 2307
  • 214 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: По полям
« Ответ #1 : 30.10.2018, 15:52:31 »
Здесь надо создавать новый тип поля, и без этого ни как.
Сейчас нет возможности чтоб показать даже пример файла который будет, но там все просто...
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

denism300

  • Захожу иногда
  • 209
  • 5 / 0
Re: По полям
« Ответ #2 : 30.10.2018, 17:30:54 »
попробовал сделать так:
поле изменил на
Код
<field 
addfieldpath="/administrator/components/com_mycomponent/models/fields"
name="exCAT"
type="vmcat"
class="inputbox"
key_field="virtuemart_category_id"
value_field="category_name"
query=""
label="Выберите категории, которые нужно исключить"
description=""
multiple="true"
/>
в /administrator/components/com_mycomponent/models/fields создал файл vmcat.php со следующим содержимым:
Код
<?php

defined('JPATH_PLATFORM') or die;

require_once(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_virtuemart'.DS.'helpers'.DS.'config.php');
VmConfig::loadConfig();
JFormHelper::loadFieldClass('sql');

class JFormFieldVMCat extends JFormFieldSQL {

    public $type = 'vmcat';

protected function getOptions() {

$query = 'SELECT virtuemart_category_id, category_name FROM #__virtuemart_categories_' . VmConfig::$vmlang . ' GROUP BY virtuemart_category_id';

$this->element['query'] = $query;

        return parent::getOptions();
}
}
в итоге, в настройках компонента загружается пустая форма.
что нужно поправить?
*

NewUsers

  • Живу я здесь
  • 2307
  • 214 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: По полям
« Ответ #3 : 30.10.2018, 18:21:29 »
Атрибут addfieldpath указывается для элементов fieldset или form
Пример файла во вложении

Код: xml
<field 
   name="exCAT"
   type="vmcat"
   class="inputbox"
   label="Выберите категории, которые нужно исключить"
   description=""
   multiple="true"
/>
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

denism300

  • Захожу иногда
  • 209
  • 5 / 0
Re: По полям
« Ответ #4 : 30.10.2018, 20:02:51 »
Цитировать
Атрибут addfieldpath указывается для элементов fieldset или form
ну у меня это поле элемент fieldset

ваш пример работает. спасибо!
*

NewUsers

  • Живу я здесь
  • 2307
  • 214 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: По полям
« Ответ #5 : 30.10.2018, 20:09:40 »
ну у меня это поле элемент fieldset
здесь По полям его указываете в field
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

NewUsers

  • Живу я здесь
  • 2307
  • 214 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: По полям
« Ответ #6 : 30.10.2018, 20:36:51 »
ваш пример работает. спасибо!
Вместо этого есть + к карме
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

denism300

  • Захожу иногда
  • 209
  • 5 / 0
Re: По полям
« Ответ #7 : 02.11.2018, 13:38:41 »
здесь По полям его указываете в field
на 3.8 и php 7 все ок.
если поставить на 3.5 и php 5.6, то выдает следующую ошибку
Цитировать
PHP Fatal error:  Class 'Joomla\\CMS\\Form\\FormHelper' not found in ...
ругается вот на эту строку:
Код
FormHelper::loadFieldClass('list');

если заменить на
Код
JFormHelper::loadFieldClass('list');
ошибка не исчезает
в чем может быть проблема?
*

NewUsers

  • Живу я здесь
  • 2307
  • 214 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: По полям
« Ответ #8 : 02.11.2018, 13:50:53 »
Класс Joomla\CMS\Form\FormHelper не доступен в версии 3.5
« Последнее редактирование: 02.11.2018, 14:11:07 от NewUsers »
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

denism300

  • Захожу иногда
  • 209
  • 5 / 0
Re: По полям
« Ответ #9 : 02.11.2018, 14:22:24 »
JFormHelper::loadFieldClass('list');
так в 3.5 должен же работать
JFormHelper::loadFieldClass('list');
или нет?
*

NewUsers

  • Живу я здесь
  • 2307
  • 214 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: По полям
« Ответ #10 : 02.11.2018, 14:35:53 »
так в 3.5 должен же работать
JFormHelper::loadFieldClass('list');
или нет?
Ну так должен! А что вас не работает?
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

denism300

  • Захожу иногда
  • 209
  • 5 / 0
Re: По полям
« Ответ #11 : 02.11.2018, 15:56:08 »
Ну так должен! А что вас не работает?
ну так да. я ж написал, что при замене FormHelper::loadFieldClass('list'); на JFormHelper::loadFieldClass('list'); ошибка не исчезает.
*

NewUsers

  • Живу я здесь
  • 2307
  • 214 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: По полям
« Ответ #12 : 02.11.2018, 16:07:34 »
Если та же самая ошибка, то use Joomla\CMS\Form\FormHelper; удалить из файла.
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться