Новости Joomla

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

👩‍💻 Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1. Это релиз, в который включены уже проверенные изменения, но ещё очень многие исправления и улучшения ждут своей очереди. Joomla следит за качеством и безопасностью своего кода и каждое изменение должно быть успешно протестировано как минимум ещё двумя участниками сообщества. Разработка Joomla ведётся на платформе GitHub.Филипп Уолтон (Philip Walton) - один из разработчиков, кто активно вносит свой вклад в ядро Joomla. Он уже несколько месяцев посвящает свои послеполуденные часы пятницы работе с Joomla и предлагает присоединиться к нему. 📆 Пятница, 30 мая 2025, с 15:00 до 17:00 по UTC (Лондон) - с 18:00 до 20:00 по Москве.В чате Google Meet Филипп готов помочь с тестированием тем, кто будет делать это в первый раз. А так же он подготовил список лёгких Pull Request, которые можно протестировать довольно быстро. Чем больше тестов будет проведено сейчас, тем меньше ошибок вылезет потом. На данный момент 148 (уже 147 на момент написания заметки) PR на GitHub Joomla ждут тестирования.👩‍💻 Open to all. All together.Также вам поможет сделать первые шаги это видео.GitHub JoomlaДа, это вечер пятницы. Но тестирование занимает порой минут 15, а доброе дело сделано. Просто убедитесь, что разработчик чего-то не пропустил и всё работает как ожидается.#joomla #joomla6 #community

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

antarey

  • Захожу иногда
  • 168
  • 1 / 0
Проблема с group_concat
« : 23.11.2020, 14:48:57 »
Добрый день.
Создаю свой компонент и надо в админке вывести поле с GROUP_CONCAT.
Таблицы
Код
CREATE TABLE IF NOT EXISTS `#__aepetitions` (
`id` int(11) NOT NULL auto_increment,
`title` VARCHAR(200) NULL,
`alias` VARCHAR(200) NOT NULL COMMENT '№ петиції',
`asset_id` INTEGER UNSIGNED NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
`introtext` TEXT NOT NULL COMMENT 'Вступний текст',
`fulltext` TEXT NOT NULL COMMENT 'Вступний текст',
`created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP() COMMENT 'Дата створення петиції',
`publish_down` DATETIME NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'Дата закінчення збору підписів',
`ordering` INT(11) NOT NULL,
`metakey` TEXT NOT NULL,
`metadesc` TEXT NOT NULL,
`hits` INT(11) NOT NULL,
`created_by` INT(11) NOT NULL COMMENT 'Хто створив',
`published` INT(2) NOT NULL DEFAULT '1' COMMENT 'Статус петиції: 1 - Триває збір підписів, 2 - На розгляді, 3 - З відповіддю, 4 - Не підтримано',
`params` TEXT NOT NULL,
`catid` INT(11) NOT NULL DEFAULT '0',
`vidpovid` TEXT NULL COMMENT 'Відповідь на петицію',
`votescount` INT(11) NOT NULL DEFAULT '1' COMMENT 'Кількість голосів',
`pidpucu` TEXT NULL COMMENT 'Хто підтримав = 1,2,3,4....',
`isconfirmed` INT(3) DEFAULT '0' NOT NULL COMMENT 'Автоматично оброблено',
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=0;

CREATE TABLE IF NOT EXISTS `#__pidpysy` (
`aepetitions_id` INT(11) NOT NULL,
`users_id` INT(11) NOT NULL,
PRIMARY KEY (`aepetitions_id`, `users_id`)
)ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=0;
Модель
Код
protected function getListQuery()
{
$query = $this->getDbo()->getQuery( true );
$query->select( 't1.id,t1.title,t1.alias,t1.asset_id,t1.introtext,t1.fulltext,t1.created,t1.publish_down,t1.ordering,t1.metakey,t1.metadesc,t1.hits');
$query->select( 't1.published as state,t1.params,t1.catid,t1.vidpovid,t1.votescount,t1.pidpucu,t1.isconfirmed,u.username as created_by,u.id as author_id, u.name as author_name,GROUP_CONCAT(up.name separator \' \') AS pidpysy_name ' );

$query->from( '#__aepetitions as t1' );
$query->join( 'LEFT', '#__users AS u ON u.id = t1.created_by' );
$query->join( 'LEFT', '#__pidpysy AS p on p.aepetitions_id = t1.id' );
$query->join( 'LEFT', '#__users AS up on up.id = p.users_id' );
$query->group( 't1.id');

$published = $this->getState( 'filter.published' );
if ( is_numeric( $published ) ) {
$query->where( 't1.published=' . (int)$published );
}
$authorId = $this->getState( 'filter.author_id' );
if ( is_numeric( $authorId ) ) {
$query->where( 'u.id=' . $authorId );
}
$search = $this->getState( 'filter.search' );
if ( !empty( $search ) ) {
$search = $this->getDbo()->Quote( '%' . $this->getDbo()->escape( $search, true ). '%' );
$query->where( '(t1.title LIKE ' . $search . ' OR t1.alias LIKE ' . $search . ')' );
}
$orderCol = $this->state->get( 'list.ordering' );
$orderDirn = $this->state->get( 'list.direction' );
$query->order( $this->getDbo()->escape( $orderCol . ' ' . $orderDirn ) );
return $query;
}
В форме добавил поле
Код
       <field
                name="pidpysy_name"
                type="textarea"
rows="10"
                readonly="true"
                />
С другими моими полями (vidpovid,votescount,isconfirmed) проблем нет.
А вот поле pidpysy_name  не выводится ни в какую :(, хотя сам запрос SQL редакторе выполняется без проблем
В чем может быть проблема?
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
Re: Проблема с group_concat
« Ответ #1 : 23.11.2020, 15:00:11 »
Вывод поля
Код
<?php echo $this->form->getInput( 'pidpysyname' );?>
Причем в списке я ето поле вижу
echo $item->pidpysyname;
А в форме редактирования нет
« Последнее редактирование: 23.11.2020, 15:06:23 от antarey »
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Проблема с group_concat
« Ответ #2 : 23.11.2020, 15:01:41 »
Вывод поля
Код
<?php echo $this->form->getInput( 'pidpysyname' );?>
должно быть pidpysy_name
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
Re: Проблема с group_concat
« Ответ #3 : 23.11.2020, 15:16:24 »
должно быть pidpysy_name
поменял кругом на pidpysyname - толку 0
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Проблема с group_concat
« Ответ #4 : 23.11.2020, 15:18:21 »
Покажите весь код модели и файла вывода
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
Re: Проблема с group_concat
« Ответ #5 : 23.11.2020, 15:24:57 »
Покажите весь код модели и файла вывода
модель
Код
<?php

// No direct access
defined( '_JEXEC' ) or die;

/**
 * @author Antarey
 */
class AepetitionsModelPepitionslists extends JModelList
{

/**
* Конструктор класса
* @param Array $config
*/
public function __construct( $config = array() )
{
if ( empty( $config['filter_fields'] ) ) {
$config['filter_fields'] = array( 'title', 'state', 'ordering', 'created_by', 'created', 'id', 'author_id' );
}
parent::__construct( $config );
}

/**
* @param String $ordering
* @param String $direction
*/
protected function populateState( $ordering = null, $direction = null )
{
if ( $layout = JFactory::getApplication()->input->get( 'layout' ) ) {
$this->context .= '.' . $layout;
}
$search = $this->getUserStateFromRequest( $this->context . '.filter.search', 'filter_search' );
$this->setState( 'filter.search', $search );
$published = $this->getUserStateFromRequest( $this->context . '.filter.published', 'filter_published', '' );
$this->setState( 'filter.published', $published );
$authorId = $this->getUserStateFromRequest( $this->context . '.filter.author_id', 'filter_author_id' );
$this->setState( 'filter.author_id', $authorId );
parent::populateState( 'id', 'desc' );
}

/**
* @param string $id
* @return string
*/
protected function getStoreId( $id = '' )
{
$id .= ':' . $this->getState( 'filter.search' );
$id .= ':' . $this->getState( 'filter.published' );
$id .= ':' . $this->getState( 'filter.author_id' );
return parent::getStoreId( $id );
}

/**
* Составление запроса для получения списка записей
* @return JDatabaseQuery
*/
protected function getListQuery()
{
$query = $this->getDbo()->getQuery( true );
$query->select( 't1.id,t1.title,t1.alias,t1.asset_id,t1.introtext,t1.fulltext,t1.created,t1.publish_down,t1.ordering,t1.metakey,t1.metadesc,t1.hits'); //SEPARATOR \'<br>\'
$query->select( 't1.published as state,t1.params,t1.catid,t1.vidpovid,t1.votescount,t1.pidpucu,t1.isconfirmed,u.username as created_by,u.id as author_id, u.name as author_name,GROUP_CONCAT(up.name ) AS pidpysyname ' );



$query->from( '#__aepetitions as t1' );
$query->join( 'LEFT', '#__users AS u ON u.id = t1.created_by' );
$query->join( 'LEFT', '#__pidpysy AS p on p.aepetitions_id = t1.id' );
$query->join( 'LEFT', '#__users AS up on up.id = p.users_id' );

$query->group( 't1.id');

$published = $this->getState( 'filter.published' );
if ( is_numeric( $published ) ) {
$query->where( 't1.published=' . (int)$published );
}
$authorId = $this->getState( 'filter.author_id' );
if ( is_numeric( $authorId ) ) {
$query->where( 'u.id=' . $authorId );
}
$search = $this->getState( 'filter.search' );
if ( !empty( $search ) ) {
$search = $this->getDbo()->Quote( '%' . $this->getDbo()->escape( $search, true ). '%' );
$query->where( '(t1.title LIKE ' . $search . ' OR t1.alias LIKE ' . $search . ')' );
}
$orderCol = $this->state->get( 'list.ordering' );
$orderDirn = $this->state->get( 'list.direction' );
$query->order( $this->getDbo()->escape( $orderCol . ' ' . $orderDirn ) );
return $query;
}

/**
* Авторы записей
* @return    JDatabaseQuery
*/
public function getAuthors()
{
$query = $this->getDbo()->getQuery( true );
$query->select( 'u.id AS value, u.name AS text' );
$query->from( '#__users AS u' );
$query->join( 'INNER', '#__aepetitions AS c ON c.created_by = u.id' );
$query->group( 'u.id, u.name' );
$query->order( 'u.name' );
return $this->getDbo()->setQuery( $query )->loadObjectList();
}
}
Вывод списка
Код
<?php
/** @var $this AepetitionsViewPepitionslists */
defined( '_JEXEC' ) or die;// No direct access
JHtml::_( 'bootstrap.tooltip' );
JHtml::_( 'behavior.multiselect' );
JHtml::_( 'formbehavior.chosen', 'select' );
$user = JFactory::getUser();
$userId = $user->get( 'id' );

$listOrder = $this->escape( $this->state->get( 'list.ordering' ) );
$listDirn = $this->escape( $this->state->get( 'list.direction' ) );
$saveOrder = $listOrder == 'ordering';

if ( $saveOrder ) {
$saveOrderingUrl = 'index.php?option=com_aepetitions&task=pepitionslists.saveOrderAjax&tmpl=component';
JHtml::_( 'sortablelist.sortable', 'articleList', 'adminForm', strtolower( $listDirn ), $saveOrderingUrl );
}
$sortFields = $this->getSortFields();
?>
<script type="text/javascript">
Joomla.orderTable = function () {
var table = document.getElementById("sortTable");
var direction = document.getElementById("directionTable");
var order = table.options[table.selectedIndex].value;
if (order != '<?php echo $listOrder; ?>') {
dirn = 'asc';
} else {
dirn = direction.options[direction.selectedIndex].value;
}
Joomla.tableOrdering(order, dirn, '');
}
</script>

<form action="<?php echo JRoute::_( 'index.php?option=com_aepetitions&view=pepitionslists' ); ?>" method="post" name="adminForm" id="adminForm">
<?php if (!empty( $this->sidebar )): ?>
<div id="j-sidebar-container" class="span2">
<?php echo $this->sidebar; ?>
</div>
<div id="j-main-container" class="span10">
<?php else : ?>
<div id="j-main-container">
<?php endif; ?>

<?php
// Search tools bar
echo JLayoutHelper::render( 'joomla.searchtools.default', array( 'view' => $this ) );
?>

<div class="table-responsive text-left">
<table class="table table-striped" id="articleList">
<thead class="bg-info border rounded border-primary shadow-sm">
<tr>
<th width="1%">
<input type="checkbox" name="checkall-toggle" value="" title="<?php echo JText::_( 'JGLOBAL_CHECK_ALL' ); ?>" onclick="Joomla.checkAll(this)" />
</th>
<th width="2%">
<?php echo JHtml::_( 'searchtools.sort', 'JSTATUS', 'state', $listDirn, $listOrder ); ?>
</th>
<th width="10%">
<?php echo JHtml::_( 'searchtools.sort', 'COM_AEPETITIONS_PETITION_NUMBER', 'title', $listDirn, $listOrder ); ?>
</th>
<th>
<?php echo JHtml::_( 'searchtools.sort', 'COM_AEPETITIONS_INTRO_TEXT', 'introtext', $listDirn, $listOrder ); ?>
</th>
<th width="10%">
<?php echo JHtml::_( 'searchtools.sort', 'JAUTHOR', 'created_by', $listDirn, $listOrder ); ?>
</th>
<th width="10%">
<?php echo JHtml::_( 'searchtools.sort', 'COM_AEPETITIONS_CREATION_DATE', 'created', $listDirn, $listOrder ); ?>
</th>
<th width="10%">
<?php echo JHtml::_( 'searchtools.sort', 'COM_AEPETITIONS_DOWN_DATE', 'publish_down', $listDirn, $listOrder ); ?>
</th>
</tr>
</thead>
<tbody>
<?php foreach ( $this->items as $i => $item ) :
$item->max_ordering = 0;
$ordering = ( $listOrder == 'a.ordering' );
$canEdit = $user->authorise( 'core.edit', '#__aepetitions.' . $item->id );
$canCheckin = $user->authorise( 'core.manage', 'com_aepetitions' ) || $item->checked_out == $userId || $item->checked_out == 0;
$canEditOwn = $user->authorise( 'core.edit.own', '#__aepetitions.' . $item->id ) && $item->created_by == $userId;
$canChange = $user->authorise( 'core.edit.state', '#__aepetitions.' . $item->id ) && $canCheckin;
?>
<tr class="row<?php echo $i % 2; ?>">

<td class="center">
<?php echo JHtml::_( 'grid.id', $i, $item->id ); ?>
</td>

<td class="center">
<?php
$status = '';
switch ($item->state) {
case 1:
$status = '<span class="icon-file-add" title="Триває збір підписів" style="font-size:18px;color:coral;"></span>';
break;
case 2:
$status = '<span class="icon-eye-open" title="На розгляді" style="font-size:18px;color:green;"></span>';
break;
case 3:
$status = '<span class="icon-pencil" title="З відповіддю" style="font-size:18px;color:blue;"></span>';
break;
case 4:
$status = '<span class="icon-thumbs-down" title="Не підтримано" style="font-size:18px;color:red;"></span>';
break;
}
echo $status;
?>
</td>

<td>
<?php if ( $canEdit || $canEditOwn ) : ?>
<a href="<?php echo JRoute::_( 'index.php?option=com_aepetitions&task=pepitionslist.edit&id=' . $item->id ); ?>" title="<?php echo JText::_( 'JACTION_EDIT' ); ?>">
<?php echo $this->escape( $item->title ); ?></a>
<?php else : ?>
<span title="<?php echo JText::sprintf( 'JFIELD_ALIAS_LABEL', $this->escape( $item->alias ) ); ?>"><?php echo $this->escape( $item->title ); ?></span>
<?php endif; ?>
</td>

<td style="-webkit-line-clamp: 3; display: -webkit-box; -webkit-box-orient: vertical;overflow: hidden;">
<?php echo $this->escape( $item->introtext ); ?>
</td>

<td>
<?php echo $this->escape( $item->author_name ); ?>
</td>

<td>
<?php echo JHtml::_( 'date', $item->created, JText::_( 'DATE_FORMAT_LC4' ) ); ?>
</td>

<td>
<?php echo JHtml::_( 'date', $item->publish_down, JText::_( 'DATE_FORMAT_LC4' ) ); ?>
</td>

</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>


<?php echo $this->pagination->getListFooter(); ?>

<input type="hidden" name="task" value="" />
<input type="hidden" name="boxchecked" value="0" />
<?php echo JHtml::_( 'form.token' ); ?>

</div>
</form>
Форма редактирования
Код
<?php
/** @var $this AepetitionsViewPepitionslist */
defined( '_JEXEC' ) or die;// No direct access
JHtml::_('bootstrap.tooltip');
//JHtmlBootstrap::loadCss();
JHtml::_( 'behavior.formvalidation' );
JHtml::_( 'behavior.keepalive' );
JHtml::_( 'formbehavior.chosen', 'select' );
$input = JFactory::getApplication()->input;
$needvotes = JComponentHelper::getParams('com_aepetitions')->get('needvotes');


JFactory::getDocument()->addStyleSheet('/administrator/components/com_aepetitions/media/css/bootstrap.min.css');
JFactory::getDocument()->addStyleSheet('components/com_aepetitions/media/css/aeadm.css');

?>
<script type="text/javascript">
Joomla.submitbutton = function (task) {
if (task == 'pepitionslist.cancel' || document.formvalidator.isValid(document.id('item-form'))) {
<?php echo $this->form->getField( 'text' )->save(); ?>
Joomla.submitform(task, document.getElementById('item-form'));
} else {
alert('<?php echo $this->escape( JText::_( 'JGLOBAL_VALIDATION_FORM_FAILED' ) ); ?>');
}
}
</script>
<form action="<?php echo JRoute::_( 'index.php?option=com_aepetitions&id=' . $this->form->getValue( 'id' ) ); ?>" method="post" name="adminForm" id="item-form" class="form-validate" enctype="multipart/form-data">



<div class="form-horizontal">

<div class="form-row d-flex d-md-flex flex-row justify-content-md-start align-items-md-center" style="margin: 4px 0;">
<div class="col" style="padding: 4px 16px">
<button onclick="Joomla.submitbutton('pepitionslist.cancel');" class="btn btn-small button-cancel">
<span class="icon-cancel" aria-hidden="true"></span><?php echo JText::_( 'JTOOLBAR_CLOSE');?></button>
</div>
</div>

<div class="form-row d-flex d-md-flex flex-row justify-content-md-start align-items-md-center border border-primary rounded" style="margin: 4px 0;">
<div class="col-md-6" style="padding: 4px 16px">
<label for="jform_alias"><?php echo JText::_( 'COM_AEPETITIONS_NUMBER');?></label>
<?php echo $this->form->getInput( 'alias' );?>
</div>
<div class="col-md-6" style="padding: 4px 16px;">
<label for="jform_created_by"><?php echo JText::_( 'COM_AEPETITIONS_AUTOR');?></label>
<?php echo $this->form->getInput( 'created_by' );?>
</div>
</div>
<div class="form-row d-flex flex-row border border-primary rounded" style="margin: 4px 0;">
<div class="col d-md-flex flex-column">
<div class="form-row d-flex d-md-flex  flex-column flex-fill" style="padding: 4px 16px">
<label for="jform_created"><?php echo JText::_( 'COM_AEPETITIONS_CREATION_DATE');?></label>
<?php echo $this->form->getInput( 'created' );?>
</div>
<div class="form-row d-flex d-md-flex flex-column flex-fill" style="padding: 4px 16px">
<label for="jform_publish_down"><?php echo JText::_( 'COM_AEPETITIONS_DOWN_DATE');?></label>
<?php echo $this->form->getInput( 'publish_down' );?>
</div>
</div>
<div class="col">
<div class="form-row">
<div class="col-md-6" style="padding: 4px 16px;">
<label for="needvotes"><?php echo JText::_( 'COM_AEPETITIONS_NEEDVOTES');?></label>
<input class="form-control" type="number" id="needvotes" readonly="" value="<?php echo $needvotes;?>">
</div>
<div class="col-md-6" style="padding: 4px 16px;">
<label for="jform_votescount"><?php echo JText::_( 'COM_AEPETITIONS_VOTES');?></label>
<?php echo $this->form->getInput( 'votescount' );?>
</div>
</div>
</div>
</div>
<div class="form-row d-flex flex-row border border-primary rounded" style="margin: 4px 0;">
<div class="col-8 d-flex flex-column" style="padding: 4px 16px;">
<label for="jform_introtext"><?php echo JText::_( 'COM_AEPETITIONS_AINTRO');?></label>
<?php echo $this->form->getInput( 'introtext' );?>
<label for="jform_fulltext"><?php echo JText::_( 'COM_AEPETITIONS_AFULL');?></label>
<?php echo $this->form->getInput( 'fulltext' );?>
</div>
<div class="col-4" style="padding: 4px 16px;">
<label for="jform_pidpucu_name"><?php echo JText::_( 'COM_AEPETITIONS_PIDPYSY');?></label>
<?php echo $this->form->getInput( 'pidpysyname' );?>
</div>
</div>


</div>

<input type="hidden" name="task" value="" />
<input type="hidden" name="return" value="<?php echo $input->getCmd( 'return' ); ?>" />
<?php echo JHtml::_( 'form.token' ); ?>
</form>
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Проблема с group_concat
« Ответ #6 : 23.11.2020, 15:29:50 »
А теперь файл модели формы редактирования
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
Re: Проблема с group_concat
« Ответ #7 : 23.11.2020, 15:36:00 »
А теперь файл модели формы редактирования
Код
<?php

// No direct access
defined( '_JEXEC' ) or die;

/**
 * Модель редактирования текущего элемента
 * @author Antarey
 */
class AepetitionsModelPepitionslist extends JModelAdmin {

/**
* загрузка текущей формы
* @param Array $data
* @param Boolean $loadData
* @return Object form data
*/
public function getForm( $data = array( ), $loadData = true ) {
$form = $this->loadForm( 'com_aepetitions.pepitionslist', 'pepitionslist', array( 'control' => 'jform', 'load_data' => $loadData ) );
if ( empty( $form ) ) {
return false;
}
$user = JFactory::getUser();
if ( !$user->authorise( 'core.edit.state', '#__aepetitions.' . $this->getState( 'extdataedit.id' ) ) ) {
$form->setFieldAttribute( 'published', 'disabled', 'true' );
$form->setFieldAttribute( 'published', 'filter', 'unset' );
}
return $form;
}

/**
* @param Int $id (object identifier)
* @return Object (current item)
*/
public function getItem( $id = null ) {
if ( $item = parent::getItem( $id ) ) {
$item->text = trim( $item->fulltext )!= '' ? $item->introtext . '<hr id="system-readmore" />' . $item->fulltext : $item->introtext;
}
return $item;
}

/**
* @param string $type
* @param string $prefix
* @param array $config
* @return JTable|mixed
*/
public function getTable( $type = 'aepetitions', $prefix = 'Table', $config = array( ) ) {
return JTable::getInstance( $type, $prefix, $config );
}

/**
* Загрузка данных в форму
* @return Object
*/
protected function loadFormData() {
$data = JFactory::getApplication()->getUserState( 'com_aepetitions.edit.pepitionslist.data', array() );
if ( empty( $data ) ) {
$data = $this->getItem();
}
return $data;
}

/**
* Запрет удаления записи
* @param object $record
* @return bool
*/
protected function canDelete( $record )
{
if ( !empty( $record->id ) ) {
return JFactory::getUser()->authorise( 'core.delete', '#__aepetitions.' . (int)$record->id );
}
}

/**
* Запрет изменения состояния
* @param object $record
* @return bool
*/
protected function canEditState( $record )
{
$user = JFactory::getUser();

// Check for existing article.
if ( !empty( $record->id ) ) {
return $user->authorise( 'core.edit.state', '#__aepetitions.' . (int)$record->id );
} // New article, so check against the category.
elseif ( !empty( $record->catid ) ) {
return $user->authorise( 'core.edit.state', '#__aepetitions.' . (int)$record->catid );
} // Default to component settings if neither article nor category known.
else {
return parent::canEditState( 'com_aepetitions' );
}
}

}
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Проблема с group_concat
« Ответ #8 : 23.11.2020, 15:38:02 »
Запрос который содержит GROUP_CONCAT находится в файле модели списка, а вам нужно его выполнять в файле формы
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
Re: Проблема с group_concat
« Ответ #9 : 23.11.2020, 15:42:24 »
Запрос который содержит GROUP_CONCAT находится в файле модели списка, а вам нужно его выполнять в файле формы
Я только учусь.
Подскажите куда запихнуть запрос?
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
Re: Проблема с group_concat
« Ответ #10 : 23.11.2020, 15:43:23 »
Если я правильно понял запрос из модели списка перенести в
Код
public function getItem( $id = null )
??
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Проблема с group_concat
« Ответ #11 : 23.11.2020, 15:44:13 »
Если я правильно понял запрос из модели списка перенести в
Код
public function getItem( $id = null )
??
да
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
Re: Проблема с group_concat
« Ответ #12 : 23.11.2020, 15:46:53 »
А как правильно ето реализовать?
А то
Код
if ( $item = parent::getItem( $id ) ) {
$item->text = trim( $item->fulltext )!= '' ? $item->introtext . '<hr id="system-readmore" />' . $item->fulltext : $item->introtext;
}
return $item;
Я не пойму где формируется запрос? в хелпере getItem нету
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Проблема с group_concat
« Ответ #13 : 23.11.2020, 15:53:08 »
Код: php
public function getItem( $id = null )
{
    if ( $item = parent::getItem( $id ) )
    {
        $item->text = trim( $item->fulltext )!= '' ? $item->introtext . '<hr id="system-readmore" />' . $item->fulltext : $item->introtext;

        $query = $this->getDbo()->getQuery( true );
        $query->select( 'GROUP_CONCAT(name)' );

        $query->from( '#__users' );
        $query->where('u.id = ' . $item->created_by);// условие исправьте на свое
        $item->pidpysyname = $db->setQuery($query)->loadResult();
    }

    return $item;
}
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
Re: Проблема с group_concat
« Ответ #14 : 23.11.2020, 16:04:08 »
Код: php
public function getItem( $id = null )
{
    if ( $item = parent::getItem( $id ) )
    {
        $item->text = trim( $item->fulltext )!= '' ? $item->introtext . '<hr id="system-readmore" />' . $item->fulltext : $item->introtext;

        $query = $this->getDbo()->getQuery( true );
        $query->select( 'GROUP_CONCAT(name)' );

        $query->from( '#__users' );
        $query->where('u.id = ' . $item->created_by);// условие исправьте на свое
        $item->pidpysyname = $db->setQuery($query)->loadResult();
    }

    return $item;
}
если я правильно понял - то к запросу к таблице
Код
select * from #__aepetitions where id=:id
добавляется запрос к таблице #__users?
У меня там получается в запросе связка двух таблиц
      $query->join( 'LEFT', '#__pidpysy AS p on p.aepetitions_id = t1.id' );
      $query->join( 'LEFT', '#__users AS up on up.id = p.users_id' );
тогда мне надо тоже ж join добавить?
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Проблема с group_concat
« Ответ #15 : 23.11.2020, 16:06:57 »
Я без понятия какое значение храниться в таблицах...
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
Re: Проблема с group_concat
« Ответ #16 : 23.11.2020, 16:07:04 »
или принцип другой?
и в поле $item->pidpysyname просто заганяются результаты запроса?
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
Re: Проблема с group_concat
« Ответ #17 : 23.11.2020, 16:08:39 »
Я без понятия какое значение храниться в таблицах...
Я просто не понял сам принцип формирования $item->pidpysyname
как по предыдущему ответу?
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Проблема с group_concat
« Ответ #18 : 23.11.2020, 16:13:06 »
Я просто не понял сам принцип формирования $item->pidpysyname
как по предыдущему ответу?
Код: sql
$query->select( 'GROUP_CONCAT(up.name)');
$query->from( '#__pidpysy AS p' );
$query->join( 'LEFT', '#__users AS up on up.id = p.users_id' );
$query->where('p.aepetitions_id = ' . $item->id);

$item->pidpysyname = $db->setQuery($query)->loadResult();
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
Re: Проблема с group_concat
« Ответ #19 : 23.11.2020, 16:18:04 »
$query->select( 'GROUP_CONCAT(up.name)');
$query->from( '#__pidpysy AS p' );
$query->join( 'LEFT', '#__users AS up on up.id = p.users_id' );
$query->where('p.aepetitions_id = ' . $item->id);

$item->pidpysyname = $db->setQuery($query)->loadResult();
Call to a member function setQuery() on null
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Проблема с group_concat
« Ответ #20 : 23.11.2020, 16:19:16 »
$this->getDbo()
Код: php
$db = $this->getDbo();
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
Re: Проблема с group_concat
« Ответ #21 : 23.11.2020, 16:23:38 »
сам запрос правильный
Код
SELECT  GROUP_CONCAT(up.name)
from dwqhk_pidpysy AS p
LEFT join dwqhk_users AS up on up.id = p.users_id
where p.aepetitions_id = 1
а че joomle не нравиться?
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Проблема с group_concat
« Ответ #22 : 23.11.2020, 16:27:08 »
А если вот так
Код: php
$db = $this->getDbo();

$query = $db->getQuery(true);
$query->select( 'name');
$query->from( '#__pidpysy AS p' );
$query->join( 'LEFT', '#__users AS up on up.id = p.users_id' );
$query->where('p.aepetitions_id = ' . $item->id);

$pidpysyname = $db->setQuery($query)->loadAssocList();
$item->pidpysyname = implode(' ', array_column($pidpysyname, 'name'));
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
Re: Проблема с group_concat
« Ответ #23 : 23.11.2020, 16:29:28 »
А если вот так
Код: php
$db = $this->getDbo();

$query = $db->getQuery(true);
$query->select( 'name');
$query->from( '#__pidpysy AS p' );
$query->join( 'LEFT', '#__users AS up on up.id = p.users_id' );
$query->where('p.aepetitions_id = ' . $item->id);

$pidpysyname = $db->setQuery($query)->loadAssocList();
$item->pidpysyname = implode(' ', array_column($pidpysyname, 'name'));
уже переделал, получилось, + к карме
Хотя в модели списка
Код
$query = $this->getDbo()->getQuery( true );
нормально работает
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
Re: Проблема с group_concat
« Ответ #24 : 23.11.2020, 16:35:30 »
Вариант
Код
$db = $this->getDbo();
$query = $db->getQuery( true );
$query->select( 'GROUP_CONCAT(up.name SEPARATOR \'<br>\')');
$query->from( '#__pidpysy AS p' );
$query->join( 'LEFT', '#__users AS up on up.id = p.users_id' );
$query->where('p.aepetitions_id = ' . $item->id);

$item->pidpysyname = $db->setQuery($query)->loadResult();
тоже работает.
Есть еще одна хотелка - если ее возможно реализовать в запросе
Получаю список Иванов<br>Петров - как заставить понимать тег <br>
В форме
Код
        <field
                name="pidpysyname"
                type="textarea"
rows="10"
                label="COM_AEPETITIONS_PIDPYSY"
                description="COM_AEPETITIONS_PIDPYSY"
                readonly="true"
filter="RAW"
                />
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Проблема с group_concat
« Ответ #25 : 23.11.2020, 16:38:12 »
Код: php
echo str_replace('<br>', "\n", $item->pidpysyname);
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Проблема с group_concat
« Ответ #26 : 23.11.2020, 16:39:21 »
Получаю список Иванов<br>Петров - как заставить понимать тег <br>
Не понятно, зачем вы выводите это в textarea?
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
Re: Проблема с group_concat
« Ответ #27 : 23.11.2020, 16:41:29 »
Код: php
echo str_replace('<br>', "\n", $item->pidpysyname);
проще на уровне запроса
Код
$query->select( 'GROUP_CONCAT(up.name SEPARATOR \'\\n\')');
Еще раз спасибо
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
Re: Проблема с group_concat
« Ответ #28 : 23.11.2020, 16:42:02 »
Не понятно, зачем вы выводите это в textarea?
Посоветуйте какое поле использовать
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Проблема с group_concat
« Ответ #29 : 23.11.2020, 16:43:51 »
Посоветуйте какое поле использовать
Самописное? (там не надо будет извращаться с GROUP_CONCAT)
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проблема с адаптацией

Автор Leo1986

Ответов: 1
Просмотров: 278
Последний ответ 22.05.2025, 20:30:25
от Leo1986
Проблема с плагином News Show gk5

Автор Evgeniy

Ответов: 4
Просмотров: 648
Последний ответ 27.03.2025, 05:38:57
от R31rus
Проблема со входом в панель администратора Joomla 3.x после обновления

Автор danieeljose

Ответов: 2
Просмотров: 692
Последний ответ 24.03.2025, 20:33:02
от R31rus
Проблема с меню

Автор denis_4

Ответов: 6
Просмотров: 1093
Последний ответ 07.08.2024, 14:00:43
от denis_4
Непонятная проблема с меню

Автор THE KILLERS

Ответов: 2
Просмотров: 6847
Последний ответ 25.07.2024, 16:07:39
от THE KILLERS