Joomla Development - Папка таблиц и папок полей - PullRequest
0 голосов
/ 17 февраля 2012

Я прошел учебник по разработке компонентов на http://docs.joomla.org/Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_06.

Хотя код великолепен - я чувствую, что они оставляют некоторые объяснения.Мой основной вопрос: что должна содержать каждая папка и когда ее использовать?

Что меня смущает, так это то, что я могу удалить код полей - и мой интерфейс все еще работает, как будто его там нет.Итак, что он делает?

Во-вторых, код в табличном файле просто вызывает конструктор родительского класса.Как это может получить информацию, которую я ищу?Это потому, что JTable инициализируется, когда мы вызываем getTable ()?

Этот пример, кажется, просто показывает, если бы мы хотели одну запись из БД ... что если бы я хотел перечислить их все - я бы все еще использовал тот же файл таблицы ???

Извините- Я просто пытаюсь обернуть голову вокруг этого.Моя самая большая проблема в том, что мне часто приходится почесывать голову от их документации ... Спасибо за любой совет / объяснение!

Дарен

Ответы [ 2 ]

1 голос
/ 17 февраля 2012

Я согласен, что документация может быть немного запутанной.Рассмотрение других расширений, как предположил Дэмиен Пирси, может быть действительно полезным.Однако, по моему опыту, другие расширения имеют тенденцию к фристайлу и не соответствуют стандартам Joomla (например, Community Builder).Я предлагаю взглянуть на встроенные компоненты, такие как com_contacts и com_weblinks.

Удаление кода поля на самом деле не сломает внешний интерфейс.Это потому, что (по крайней мере в части 6) поле используется только в бэкэнде (администратор).Прямо под пояснением кода поля есть строка:

"Вы можете увидеть результат этого изменения в разделе менеджера меню для элемента helloworld."

Вы поймете, что удаление кода поля нарушает редактирование вашего пункта меню.

Когда вызывается getTable (), он создает новый экземпляр вашего класса Table.Ваш табличный код может быть очень коротким, потому что родительский класс (JTable) позаботится о загрузке / сохранении и т. Д. JTable нужно только знать, каково имя вашей таблицы и имя вашего основного ключа (id).Вы передаете эти данные в конструкторе таблицы, вызывая:

parent::__construct('#__helloworld', 'id', $db);

Если вы хотите загрузить список элементов из базы данных, JTable обычно не используется.Вместо этого смотрите JModelList.См. Использование веб-ссылок ModelList .

И да, несколько файлов в папке вашей таблицы будут полезны, если вы получили более одной таблицы.

0 голосов
/ 16 марта 2017

Папка Fields на самом деле содержит код для любого конкретного настраиваемого поля, которое требуется на стороне администратора.Когда мы создаем формы в конце администратора, в этой форме могут быть некоторые поля, которые показывают желаемый результат.

Допустим, в форме вам необходимо поле, в котором будут отображаться все пользователи Joomla в списке выбора.В этом случае вы можете сделать поле XML типа = "anyUniqueName", очевидно, этот XML будет находиться в каталоге форм "models"

<field name="j_users" type="anyUniqueName" label="JOOMLA_USERS" />

Теперь файл с именем anyUniqueName.php будетпостроен в «полях» каталог «моделей».Класс для него будет -

class JFormFieldAnyUniqueName extends JFormFieldList{
    protected function getInput() {
        $this->multiple=true;
        return parent::getInput();
    }
    protected function getOptions() {
        $options = array();
        $this->multiple=true;

        $db = JFactory::getDBO ();
        $query = $db->getQuery(true);
        $query->SELECT('id, user_name')
            ->FROM($db->quoteName('#__virtuemart_users'))
            ->ORDER('id');
        $db->setQuery($query);
        $values = $db->loadObjectList();
        foreach ($values as $v) {
            $options[] = JHtml::_('select.option', $v->id, vmText::_($v->user_name));
        }

        // Merge any additional options in the XML definition.
        $options = array_merge(parent::getOptions(), $options);
        return $options;
    }
}

Папка таблицы создана, чтобы получить доступ к JTable для чтения, создания или манипулирования контентом.Описание всего этого можно проверить здесь:

https://docs.joomla.org/J1.5:Using_the_JTable_class

и здесь:

https://docs.joomla.org/Using_the_JTable_class

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...