Quantcast
Channel: Joomla! Forum - community, help and support
Viewing all articles
Browse latest Browse all 1944

Joomla! 4.x Coding • Custom field for module and display data like checkboxes

$
0
0
Hi!

I created module and want to display on backend in module a list of checkboxes from DB table.
I created custom field and placed it to fields/sqlcheckboxes.php.

Code for file fields/sqlcheckboxes.php:

Code:

<?php/** * @package     Joomla.Platform * @subpackage  Form\Field * * @copyright   Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved. * @license     GNU General Public License version 2 or later; see LICENSE * @author      3ehrang <3ehrang@gmail.com> */namespace VPJoomla\Module\Faq\Form\Field;use Joomla\CMS\Form\Field\CheckboxesField;use Joomla\CMS\HTML\HTMLHelper;use Joomla\CMS\Language\Text;defined('_JEXEC') or die;/** * Supports a custom SQL select list for module settings. * * @since  Joomla 4.0 */class SQLCheckBoxesField extends CheckboxesField{/** * The form field type. * * @var    string * @since  Joomla 4.0 */protected $type = 'SQLCheckBoxes';/** * The keyField. * * @var    string * @since  Joomla 4.0 */protected $keyField;/** * The valueField. * * @var    string * @since  Joomla 4.0 */protected $valueField;/** * The translate. * * @var    boolean * @since  Joomla 4.0 */protected $translate = false;/** * The query. * * @var    string * @since  Joomla 4.0 */protected $query;/** * Method to get the custom field options. * Use the query attribute to supply a query to generate the list. * * @return  array  The field option objects. * * @since   Joomla 4.0 */protected function getOptions(): array{$options = [];// Get the database object.$db = $this->container->get('DatabaseDriver');// Set the query and get the result list.$db->setQuery($this->query);$items = $db->loadObjectList();// Build the field options.if (!empty($items)) {foreach ($items as $item) {$key = $this->keyField;$value = $this->valueField;$optionText = $this->translate ? Text::_($item->$value) : $item->$value;$options[] = HTMLHelper::_('select.option', $item->$key, $optionText);}}return $options;}/** * Method to setup the field. * * @param   \SimpleXMLElement  $element  The SimpleXMLElement object representing the <field /> tag for the form field object. * @param   mixed              $value    The form field value to validate. * @param   string             $group    The field name group control value. This acts as an array container for the field. *                                       For example if the field has name="foo" and the group value is set to "bar" then the *                                       full field name would end up being "bar[foo]". * * @return  boolean  True on success. * * @since   Joomla 4.0 */public function setup(\SimpleXMLElement $element, $value, $group = null): bool{$return = parent::setup($element, $value, $group);if ($return) {$this->keyField = (string) ($element['key_field'] ?? 'value');$this->valueField = (string) ($element['value_field'] ?? $element['name']);$this->translate = (bool) ($element['translate'] ?? false);$this->query = (string) $element['query'];}return $return;}}
This is code for field in mod_faq.xml:

Code:

<fields name="faq" addfieldpath="/modules/mod_faq/fields">                    <field name="title"                           id="faq-item"                           type="SQLCheckBoxes"                           translate="types"                           query="SELECT id, title FROM #__faq_item WHERE state = 1"                           key_field="id"                           value_field="title"                           required = "true"                           multiple="true"                           label="MOD_FAQ_SELECT_QUESTION_LABEL"                           description="MOD_FAQ_SELECT_QUESTION_DESC"                           class="check-dox-faq-item"/>                </fields>
I can't see something errors on backend, but my custom field empty and look like text field.
empty-field.png
Help me please to fix this. Thanks!

Statistics: Posted by zeus07 — Thu Apr 04, 2024 11:21 am



Viewing all articles
Browse latest Browse all 1944

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>