Новости Joomla

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

ice77

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
Добрый день, подскажите пожалуйста как поменять в данной строчке
Код
<?php echo $item->nazvanie_programmi; ?>
, так чтобы показывало  название а не id.Ниже представлен, код всего компонента.
Код
<?php

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

JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html');
JHtml::_('bootstrap.tooltip');
JHtml::_('behavior.multiselect');
JHtml::_('formbehavior.chosen', 'select');

$user       = JFactory::getUser();
$userId     = $user->get('id');
$listOrder  = $this->state->get('list.ordering');
$listDirn   = $this->state->get('list.direction');
$canCreate  = $user->authorise('core.create', 'com_plan_obuchenie') && file_exists(JPATH_COMPONENT . DIRECTORY_SEPARATOR . 'models' . DIRECTORY_SEPARATOR . 'forms' . DIRECTORY_SEPARATOR . 'obuchenieform.xml');
$canEdit    = $user->authorise('core.edit', 'com_plan_obuchenie') && file_exists(JPATH_COMPONENT . DIRECTORY_SEPARATOR . 'models' . DIRECTORY_SEPARATOR . 'forms' . DIRECTORY_SEPARATOR . 'obuchenieform.xml');
$canCheckin = $user->authorise('core.manage', 'com_plan_obuchenie');
$canChange  = $user->authorise('core.edit.state', 'com_plan_obuchenie');
$canDelete  = $user->authorise('core.delete', 'com_plan_obuchenie');

/////////////////////////////////////////////////
//Весь этот код, по идее, должен быть в модели, потом лучше перенести туда

//Составляем сводную таблицу двух компонентов
$db = JFactory::getDbo();
$query = $db->getQuery(true);

$query->clear();
$query = '
SELECT plan.id as plan_id, prog.id as prog_id
FROM #__plan_obuchenie_ plan
INNER JOIN #__programma_meroprijatij prog ON plan.nazvanie_programmi = prog.id
';

$db->setQuery($query);
$data_result = $db->loadObjectList('plan_id');
///////////////////////////////////////////////////
?>
<form action="<?php echo JRoute::_('index.php?option=com_plan_obuchenie&view=obuchenies'); ?>" method="post"
      name="adminForm" id="adminForm">


<table class="table table-striped" id="obuchenieList">
<thead>
<tr>
<?php if (isset($this->items[0]->state)): ?>
<th width="5%">
<?php echo JHtml::_('grid.sort', 'JPUBLISHED', 'a.state', $listDirn, $listOrder); ?>
</th>
<?php endif; ?>

<th class=''>
<?php echo JHtml::_('grid.sort',  'COM_PLAN_OBUCHENIE_OBUCHENIES_ID', 'a.id', $listDirn, $listOrder); ?>
</th>
<th class=''>
<?php echo JHtml::_('grid.sort',  'COM_PLAN_OBUCHENIE_OBUCHENIES_NAZVANIE_PROGRAMMI', 'a.nazvanie_programmi', $listDirn, $listOrder); ?>
</th>
<th class=''>
<?php echo JHtml::_('grid.sort',  'COM_PLAN_OBUCHENIE_OBUCHENIES_DATA_NACAHLO', 'a.data_nacahlo', $listDirn, $listOrder); ?>
</th>
<th class=''>
<?php echo JHtml::_('grid.sort',  'COM_PLAN_OBUCHENIE_OBUCHENIES_DATA_OKONCHANIJA', 'a.data_okonchanija', $listDirn, $listOrder); ?>
</th>
<th class=''>
<?php echo JHtml::_('grid.sort',  'COM_PLAN_OBUCHENIE_OBUCHENIES_STOIMOST', 'a.stoimost', $listDirn, $listOrder); ?>
</th>


<?php if ($canEdit || $canDelete): ?>
<th class="center">
<?php echo JText::_('COM_PLAN_OBUCHENIE_OBUCHENIES_ACTIONS'); ?>
</th>
<?php endif; ?>

</tr>
</thead>
<tfoot>
<tr>
<td colspan="<?php echo isset($this->items[0])? count(get_object_vars($this->items[0])) : 10; ?>">
<?php echo $this->pagination->getListFooter(); ?>
</td>
</tr>
</tfoot>
<tbody>
<?php foreach ($this->items as $i => $item) : ?>
<?php $canEdit = $user->authorise('core.edit', 'com_plan_obuchenie'); ?>

<?php if (!$canEdit && $user->authorise('core.edit.own', 'com_plan_obuchenie')): ?>
<?php $canEdit = JFactory::getUser()->id == $item->created_by; ?>
<?php endif; ?>

<tr class="row<?php echo $i % 2; ?>">

<?php if (isset($this->items[0]->state)) : ?>
<?php $class = ($canChange)? 'active' : 'disabled'; ?>
<td class="center">
<a class="btn btn-micro <?php echo $class; ?>" href="<?php echo ($canChange)? JRoute::_('index.php?option=com_plan_obuchenie&task=obuchenie.publish&id=' . $item->id . '&state=' . (($item->state + 1) % 2), false, 2) : '#'; ?>">
<?php if ($item->state == 1): ?>
<i class="icon-publish"></i>
<?php else: ?>
<i class="icon-unpublish"></i>
<?php endif; ?>
</a>
</td>
<?php endif; ?>

<td>
<?php if (isset($item->checked_out) && $item->checked_out) : ?>
<?php echo JHtml::_('jgrid.checkedout', $i, $item->uEditor, $item->checked_out_time, 'obuchenies.', $canCheckin); ?>
<?php endif; ?>
<a href="<?php echo JRoute::_('index.php?option=com_plan_obuchenie&view=obuchenie&id='.(int) $item->id); ?>">
<?php echo $this->escape($item->id); ?></a>
</td>
<td>

<a href="<?php echo JRoute::_('index.php?option=com_programma&view=meroprijatij&id='.$data_result[$item->id]->prog_id)?>"><?php echo $item->nazvanie_programmi; ?></a>
</td>
<td>

<?php echo $item->data_nacahlo; ?>
</td>
<td>

<?php echo $item->data_okonchanija; ?>
</td>
<td>

<?php echo $item->stoimost; ?>
</td>


<?php if ($canEdit || $canDelete): ?>
<td class="center">
<?php if ($canEdit): ?>
<a href="<?php echo JRoute::_('index.php?option=com_plan_obuchenie&task=obuchenieform.edit&id=' . $item->id, false, 2); ?>" class="btn btn-mini" type="button"><i class="icon-edit" ></i></a>
<?php endif; ?>
<?php if ($canDelete): ?>
<a href="<?php echo JRoute::_('index.php?option=com_plan_obuchenie&task=obuchenieform.remove&id=' . $item->id, false, 2); ?>" class="btn btn-mini delete-button" type="button"><i class="icon-trash" ></i></a>
<?php endif; ?>
</td>
<?php endif; ?>

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

<?php if ($canCreate) : ?>
<a href="<?php echo JRoute::_('index.php?option=com_plan_obuchenie&task=obuchenieform.edit&id=0', false, 0); ?>"
   class="btn btn-success btn-small"><i
class="icon-plus"></i>
<?php echo JText::_('COM_PLAN_OBUCHENIE_ADD_ITEM'); ?></a>
<?php endif; ?>

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

<?php if($canDelete) : ?>
<script type="text/javascript">

jQuery(document).ready(function () {
jQuery('.delete-button').click(deleteItem);
});

function deleteItem() {

if (!confirm("<?php echo JText::_('COM_PLAN_OBUCHENIE_DELETE_MESSAGE'); ?>")) {
return false;
}
}
</script>
<?php endif; ?>
*

NewUsers

  • Живу я здесь
  • 2307
  • 214 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
так чтобы показывало  название а не id.Ниже представлен, код всего компонента.

Посмотри что содержит переменная $this->items
Код: php
<?php print_r($this->items); ?>
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

ice77

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
У меня есть два компонента:
Во втором внешний ключ и связан с id из первого компонента, выбираю во втором определенное значение из первого.Сохраняешь и вместо символьной ссылки выходит id первого компонента, мне надо чтобы он выводил название.
Вот связывающий запрос двух таблиц
Код
$db = JFactory::getDbo(); 
$query = $db->getQuery(true);

$query->clear();
$query = '
SELECT plan.id as plan_id, prog.id as prog_id
FROM #__plan_obuchenie_ plan
INNER JOIN #__programma_meroprijatij prog ON plan.nazvanie_programmi = prog.id
';

$db->setQuery($query);
$data_result = $db->loadObjectList('plan_id');

Здесь показывает название id
Код
<a href="<?php echo JRoute::_('index.php?option=com_programma&view=meroprijatij&id='.$data_result[$item->id]->prog_id)?>">[b]<?php echo $item->nazvanie_programmi; ?>[/b]</a>
*

ice77

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
Посмотри что содержит переменная $this->items
Код: php
<?php print_r($this->items); ?>

У меня есть два компонента:
Во втором внешний ключ и связан с id из первого компонента, выбираю во втором определенное значение из первого.Сохраняешь и вместо символьной ссылки выходит id первого компонента, мне надо чтобы он выводил название.
Вот связывающий запрос двух таблиц
Код
$db = JFactory::getDbo(); 
$query = $db->getQuery(true);

$query->clear();
$query = '
SELECT plan.id as plan_id, prog.id as prog_id
FROM #__plan_obuchenie_ plan
INNER JOIN #__programma_meroprijatij prog ON plan.nazvanie_programmi = prog.id
';

$db->setQuery($query);
$data_result = $db->loadObjectList('plan_id');

Здесь показывает название id
Код
<a href="<?php echo JRoute::_('index.php?option=com_programma&view=meroprijatij&id='.$data_result[$item->id]->prog_id)?>">[b]<?php echo $item->nazvanie_programmi; ?>[/b]</a>
Мне нужно сделать:в представлении,  в переменных должны быть не только ID, но и названия.
Как в этой строке изменить. Подскажите пожалуйста
 
« Последнее редактирование: 29.05.2017, 16:06:39 от ice77 »
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
$this->items - это результат этого запроса? Если да, то я не вижу в запросе выборки поля nazvanie_programmi.
*

ice77

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
$this->items - это результат этого запроса? Если да, то я не вижу в запросе выборки поля nazvanie_programmi.
nazvanie_programmi это внеший ключ(во втором компоненте). В запросе он равен id компонента первого. Выводит id этой строчки <?php echo $item->nazvanie_programmi; ?>
В запросе идет связь между внешним ключем с название nazvanie_programmi и id первого компонента. В первом компоненте есть id, название. Мне нужно, чтобы через связь не id показывался в строке nazvanie_programmi, а название элемента который я выбираю.
Ссылка на скриншоты бд компонентов и вида.
https://yadi.sk/d/ExYuiiaR3JdXhx

*

ice77

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
Посмотри что содержит переменная $this->items
Код: php
<?php print_r($this->items); ?>
А
Код: php
<?php print_r($this->items); ?>
выдает:
    
Код: php
 stdClass Object ( [id] => 3 [asset_id] => 178 [ordering] => 1 [state] => 1 [checked_out] => 0 [checked_out_time] => 0000-00-00 00:00:00 [created_by] => 53 [modified_by] => 53 [nazvanie_programmi] => 9 [data_nacahlo] => 2017-05-29 [data_okonchanija] => 2017-05-31 [stoimost] => 7000 [uEditor] => [obuchenies_fk_value_2710829] => ) [1] => stdClass Object ( [id] => 4 [asset_id] => 179 [ordering] => 2 [state] => 1 [checked_out] => 0 [checked_out_time] => 0000-00-00 00:00:00 [created_by] => 53 [modified_by] => 53 [nazvanie_programmi] => 8 [data_nacahlo] => 2017-05-24 [data_okonchanija] => 2017-05-31 [stoimost] => 800000000 [uEditor] => [obuchenies_fk_value_2710829] => 8 ) [2] => stdClass Object ( [id] => 5 [asset_id] => 181 [ordering] => 3 [state] => 1 [checked_out] => 0 [checked_out_time] => 0000-00-00 00:00:00 [created_by] => 53 [modified_by] => 53 [nazvanie_programmi] => 9 [data_nacahlo] => 2017-05-25 [data_okonchanija] => 2017-05-31 [stoimost] => 70 [uEditor] => [obuchenies_fk_value_2710829] => ) [3] => stdClass Object ( [id] => 6 [asset_id] => 182 [ordering] => 4 [state] => 1 [checked_out] => 0 [checked_out_time] => 0000-00-00 00:00:00 [created_by] => 53 [modified_by] => 53 [nazvanie_programmi] => 9 [data_nacahlo] => 2017-05-24 [data_okonchanija] => 2017-06-02 [stoimost] => 9000 [uEditor] => [obuchenies_fk_value_2710829] => ) [4] => stdClass Object ( [id] => 7 [asset_id] => 183 [ordering] => 5 [state] => 1 [checked_out] => 0 [checked_out_time] => 0000-00-00 00:00:00 [created_by] => 53 [modified_by] => 53 [nazvanie_programmi] => 8 [data_nacahlo] => 2017-05-31 [data_okonchanija] => 2017-05-30 [stoimost] => 7000 [uEditor] => [obuchenies_fk_value_2710829] => 8 ) [5] => stdClass Object ( [id] => 8 [asset_id] => 208 [ordering] => 6 [state] => 1 [checked_out] => 0 [checked_out_time] => 0000-00-00 00:00:00 [created_by] => 53 [modified_by] => 53 [nazvanie_programmi] => 8 [data_nacahlo] => 0000-00-00 [data_okonchanija] => 0000-00-00 [stoimost] => 0 [uEditor] => [obuchenies_fk_value_2710829] => 8 ) ) 
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
3 раза прочитал, ни черта не понял.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

almika

  • Захожу иногда
  • 325
  • 27 / 0
Насколько я поняла, вы хотите вывести значение поля naimenovanie_programmi.

Код
<a href="<?php echo JRoute::_('index.php?option=com_programma&view=meroprijatij&id='.$data_result[$item->id]->prog_id)?>">[b]<?php echo $item->naimenovanie_programmi; ?>[/b]</a>

*

ice77

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
Насколько я поняла, вы хотите вывести значение поля naimenovanie_programmi.

Код
<a href="<?php echo JRoute::_('index.php?option=com_programma&view=meroprijatij&id='.$data_result[$item->id]->prog_id)?>">[b]<?php echo $item->naimenovanie_programmi; ?>[/b]</a>



Да поняли, правильно. Только получается данных нет, которые необходимы. Где мне исправить можно это?
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Ну так добавьте в SELECT нужные поля из таблицы: title или что у Вас там... на работе у меня закрыт доступ к диску яндекса.
*

ice77

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
Ну так добавьте в SELECT нужные поля из таблицы: title или что у Вас там... на работе у меня закрыт доступ к диску яндекса.

//Сводную таблица двух компонентов
   $db = JFactory::getDbo();
   $query = $db->getQuery(true);
   
   $query->clear();
   $query = '
   SELECT plan.id as plan_id, prog.id as prog_id
   FROM #__plan_obuchenie_ plan
   INNER JOIN #__programma_meroprijatij prog ON plan.nazvanie_programmi = prog.id
   ';   
   
   $db->setQuery($query);
   $data_result = $db->loadObjectList('plan_id');

Здесь делаю выбор нужно поля, правильно понимаю?
*

ice77

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
Да
Добавил поле:naimenovanie_programmi
Данное поле берется из таблицы:#__programma_meroprijatij
$db = JFactory::getDbo();
   $query = $db->getQuery(true);
   
   $query->clear();
   $query = '
   SELECT plan.id as plan_id, prog.id as prog_id, prog.naimenovanie_programmi
   FROM #__plan_obuchenie_ plan
   INNER JOIN #__programma_meroprijatij prog ON plan.nazvanie_programmi = prog.id
   ';   
   
   $db->setQuery($query);
   $data_result = $db->loadObjectList('plan_id');

Подскажите все правильно ли я сделал или нет?
Так как после команды print_r не вижу данного параметра, а также только внешний ключ, только
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Всё правильно.

Цитировать
Так как после команды print_r не вижу данного параметра, а также только внешний ключ, только
Значит где-то ещё items обрабатывается или не из этого запроса получаются.
*

ice77

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
Всё правильно.
Значит где-то ещё items обрабатывается или не из этого запроса получаются.
Это я исправил в представлении своем. Могу предположить, что нужно XML модели, или файле PHP модели?

Код XML
Код
<?xml version="1.0" encoding="utf-8"?>
<form>
  <fieldset>
    <field name="id" type="text" readonly="true" class="readonly" default="0" description="JGLOBAL_FIELD_ID_DESC"/>
    <field name="ordering"/>
    <field name="state" default="1" type="list" label="JSTATUS" description="JFIELD_PUBLISHED_DESC" class="inputbox" size="1">
      <option value="1">JPUBLISHED</option>
      <option value="0">JUNPUBLISHED</option>
      <option value="2">JARCHIVED</option>
      <option value="-2">JTRASHED</option>
    </field>
    <field name="checked_out" type="hidden" filter="unset"/>
    <field name="checked_out_time" default="0000-00-00 00:00:00" type="hidden" filter="unset"/>
    <field name="nazvanie_programmi" type="foreignkey" label="COM_PLAN_OBUCHENIE_FORM_LBL_OBUCHENIE_NAZVANIE_PROGRAMMI" description="COM_PLAN_OBUCHENIE_FORM_DESC_OBUCHENIE_NAZVANIE_PROGRAMMI" class="inputbox" input_type="list" table="#__programma_meroprijatij" key_field="id" value_field="naimenovanie_programmi" required="true" default=""/>
    <field name="data_nacahlo" type="calendar" class="inputbox" label="COM_PLAN_OBUCHENIE_FORM_LBL_OBUCHENIE_DATA_NACAHLO" description="COM_PLAN_OBUCHENIE_FORM_DESC_OBUCHENIE_DATA_NACAHLO" hint="COM_PLAN_OBUCHENIE_FORM_LBL_OBUCHENIE_DATA_NACAHLO"/>
    <field name="data_okonchanija" type="calendar" class="inputbox" label="COM_PLAN_OBUCHENIE_FORM_LBL_OBUCHENIE_DATA_OKONCHANIJA" description="COM_PLAN_OBUCHENIE_FORM_DESC_OBUCHENIE_DATA_OKONCHANIJA" hint="COM_PLAN_OBUCHENIE_FORM_LBL_OBUCHENIE_DATA_OKONCHANIJA"/>
    <field name="stoimost" label="COM_PLAN_OBUCHENIE_FORM_LBL_OBUCHENIE_STOIMOST" description="COM_PLAN_OBUCHENIE_FORM_DESC_OBUCHENIE_STOIMOST" hint="COM_PLAN_OBUCHENIE_FORM_LBL_OBUCHENIE_STOIMOST"/>
    <field name="version_note" type="text" label="JGLOBAL_FIELD_VERSION_NOTE_LABEL" description="JGLOBAL_FIELD_VERSION_NOTE_DESC" class="inputbox" size="45" labelclass="control-label"/>
  </fieldset>
  <fieldset name="accesscontrol">
    <field name="asset_id" type="hidden" filter="unset"/>
    <field name="rules" type="rules" label="JFIELD_RULES_LABEL" translate_label="false" filter="rules" validate="rules" class="inputbox" component="com_plan_obuchenie" section="obuchenie"/>
  </fieldset>
</form>

Код модели:
Код
<?php

class Plan_obuchenieModelObuchenies extends JModelList
{

public function __construct($config = array())
{
if (empty($config['filter_fields']))
{
$config['filter_fields'] = array(
'id', 'a.id',
'ordering', 'a.ordering',
'state', 'a.state',
'created_by', 'a.created_by',
'modified_by', 'a.modified_by',
'nazvanie_programmi', 'a.nazvanie_programmi',
'data_nacahlo', 'a.data_nacahlo',
'data_okonchanija', 'a.data_okonchanija',
'stoimost', 'a.stoimost',
);
}

parent::__construct($config);
}

/**
* Method to auto-populate the model state.
*
* Note. Calling getState in this method will result in recursion.
*
* @param   string  $ordering   Elements order
* @param   string  $direction  Order direction
*
* @return void
*
* @throws Exception
*
* @since    1.6
*/
protected function populateState($ordering = null, $direction = null)
{
$app  = JFactory::getApplication();
$list = $app->getUserState($this->context . '.list');

$ordering  = isset($list['filter_order'])     ? $list['filter_order']     : null;
$direction = isset($list['filter_order_Dir'])? $list['filter_order_Dir'] : null;

$list['limit']     = (int) JFactory::getConfig()->get('list_limit', 20);
$list['start']     = $app->input->getInt('start', 0);
$list['ordering']  = $ordering;
$list['direction'] = $direction;

$app->setUserState($this->context . '.list', $list);
$app->input->set('list', null);

// List state information.
parent::populateState($ordering, $direction);

        $app = JFactory::getApplication();

        $ordering  = $app->getUserStateFromRequest($this->context . '.ordercol', 'filter_order', $ordering);
        $direction = $app->getUserStateFromRequest($this->context . '.orderdirn', 'filter_order_Dir', $ordering);

        $this->setState('list.ordering', $ordering);
        $this->setState('list.direction', $direction);

        $start = $app->getUserStateFromRequest($this->context . '.limitstart', 'limitstart', 0, 'int');
        $limit = $app->getUserStateFromRequest($this->context . '.limit', 'limit', 0, 'int');

        if ($limit == 0)
        {
            $limit = $app->get('list_limit', 0);
        }

        $this->setState('list.limit', $limit);
        $this->setState('list.start', $start);
}

/**
* Build an SQL query to load the list data.
*
* @return   JDatabaseQuery
*
* @since    1.6
*/
protected function getListQuery()
{
// Create a new query object.
$db    = $this->getDbo();
$query = $db->getQuery(true);

// Select the required fields from the table.
$query
->select(
$this->getState(
'list.select', 'DISTINCT a.*'
)
);

$query->from('`#__plan_obuchenie_` AS a');

// Join over the users for the checked out user.
$query->select('uc.name AS uEditor');
$query->join('LEFT', '#__users AS uc ON uc.id=a.checked_out');

// Join over the created by field 'created_by'
$query->join('LEFT', '#__users AS created_by ON created_by.id = a.created_by');

// Join over the created by field 'modified_by'
$query->join('LEFT', '#__users AS modified_by ON modified_by.id = a.modified_by');
// Join over the foreign key 'nazvanie_programmi'
$query->select('`#__plan_obuchenie__2710829`.`nazvanie_programmi` AS obuchenies_fk_value_2710829');
$query->join('LEFT', '#__plan_obuchenie_ AS #__plan_obuchenie__2710829 ON #__plan_obuchenie__2710829.`id` = a.`nazvanie_programmi`');

if (!JFactory::getUser()->authorise('core.edit', 'com_plan_obuchenie'))
{
$query->where('a.state = 1');
}

// Filter by search in title
$search = $this->getState('filter.search');

if (!empty($search))
{
if (stripos($search, 'id:') === 0)
{
$query->where('a.id = ' . (int) substr($search, 3));
}
else
{
$search = $db->Quote('%' . $db->escape($search, true). '%');
}
}


// Add the list ordering clause.
$orderCol  = $this->state->get('list.ordering', 'ordering');
$orderDirn = $this->state->get('list.direction', 'asc');

if ($orderCol && $orderDirn)
{
$query->order($db->escape($orderCol . ' ' . $orderDirn));
}

return $query;
}

/**
* Method to get an array of data items
*
* @return  mixed An array of data on success, false on failure.
*/
public function getItems()
{
$items = parent::getItems();

foreach ($items as $item)
{
if (isset($item->nazvanie_programmi) && $item->nazvanie_programmi != '')
{
if (is_object($item->nazvanie_programmi))
{
$item->nazvanie_programmi = \Joomla\Utilities\ArrayHelper::fromObject($item->nazvanie_programmi);
}

$values = (is_array($item->nazvanie_programmi))? $item->nazvanie_programmi : explode(',', $item->nazvanie_programmi);
$textValue = array();

foreach ($values as $value)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query
->select('`#__plan_obuchenie__2710829`.`nazvanie_programmi`')
->from($db->quoteName('#__plan_obuchenie_', '#__plan_obuchenie__2710829'))
->where($db->quoteName('id'). ' = ' . $db->quote($db->escape($value)));
$db->setQuery($query);
$results = $db->loadObject();

if ($results)
{
$textValue[] = $results->nazvanie_programmi;
}
}

$item->nazvanie_programmi = !empty($textValue)? implode(', ', $textValue) : $item->nazvanie_programmi;
}

}

return $items;
}

/**
* Overrides the default function to check Date fields format, identified by
* "_dateformat" suffix, and erases the field if it's not correct.
*
* @return void
*/
protected function loadFormData()
{
$app              = JFactory::getApplication();
$filters          = $app->getUserState($this->context . '.filter', array());
$error_dateformat = false;

foreach ($filters as $key => $value)
{
if (strpos($key, '_dateformat') && !empty($value) && $this->isValidDate($value) == null)
{
$filters[$key]    = '';
$error_dateformat = true;
}
}

if ($error_dateformat)
{
$app->enqueueMessage(JText::_("COM_PLAN_OBUCHENIE_SEARCH_FILTER_DATE_FORMAT"), "warning");
$app->setUserState($this->context . '.filter', $filters);
}

return parent::loadFormData();
}

/**
* Checks if a given date is valid and in a specified format (YYYY-MM-DD)
*
* @param   string  $date  Date to be checked
*
* @return bool
*/
private function isValidDate($date)
{
$date = str_replace('/', '-', $date);
return (date_create($date))? JFactory::getDate($date)->format("Y-m-d") : null;
}
}

*

ice77

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
Всё правильно.
Значит где-то ещё items обрабатывается или не из этого запроса получаются.
В этой строчке добавлять не нужно мне ничего $data_result = $db->loadObjectList('plan_id');?
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Сюда добавьте:
$query->select('`#__plan_obuchenie__2710829`.`nazvanie_programmi` AS obuchenies_fk_value_2710829');

В getItems() совсем другое выбирается.

Кстати, а зачем в названиях таблиц цифры?
*

ice77

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
Сюда добавьте:
$query->select('`#__plan_obuchenie__2710829`.`nazvanie_programmi` AS obuchenies_fk_value_2710829');

В getItems() совсем другое выбирается.

Кстати, а зачем в названиях таблиц цифры?

Это от внешнего ключа было. При print_r
*

ice77

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
d
Сюда добавьте:
$query->select('`#__plan_obuchenie__2710829`.`nazvanie_programmi` AS obuchenies_fk_value_2710829');

В getItems() совсем другое выбирается.

Кстати, а зачем в названиях таблиц цифры?

вообще это поле внешний ключ и выбирается значение из другой таблицы, и чтобы при нажатии на ссылку открывался указанная строка из второго компонента. Поле naimenovanie_programmi находится в таблице #__programma_meroprijatij.

Мне нужно сделать так в выборе:
$query->select('`#__plan_obuchenie__2710829`.`#__programma_meroprijatij.naimenovanie_programmi` AS obuchenies_fk_value_2710829');
или я не правильно понял?
« Последнее редактирование: 30.05.2017, 14:30:41 от ice77 »
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
*

ice77

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
Короче, Вам нужно INNER JOIN #__programma_meroprijatij добавить в запрос getListQuery()
Подскажите как это сделать? И где должен изменить? заранее благодарю
*

almika

  • Захожу иногда
  • 325
  • 27 / 0
Короче, Вам нужно INNER JOIN #__programma_meroprijatij добавить в запрос getListQuery()
Зачем?

Вот так надо:
Код
SELECT plan.id as plan_id, prog.id as prog_id, prog.naimenovanie_programmi as prog_naimenovanie_programmi
Без алиаса, наверное, не работает.

И, кстати, в строке:
Код
FROM #__plan_obuchenie_ plan
после obuchenie символ "_" не лишний?

Видимо, так:
Код
FROM #__plan_obuchenie plan
« Последнее редактирование: 30.05.2017, 18:31:57 от almika »
*

ice77

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
Зачем?

Вот так надо:
Код
SELECT plan.id as plan_id, prog.id as prog_id, prog.naimenovanie_programmi as prog_naimenovanie_programmi
Без алиаса, наверное, не работает.

И, кстати, в строке:
Код
FROM #__plan_obuchenie_ plan
после obuchenie символ "_" не лишний?

Видимо, так:
Код
FROM #__plan_obuchenie plan

Ответ, нет не лишнее там так таблица называется.
При изменение на эту строчку ничего не меняется. SELECT plan.id as plan_id, prog.id as prog_id, prog.naimenovanie_programmi as prog_naimenovanie_programmi
« Последнее редактирование: 30.05.2017, 19:48:30 от ice77 »
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Код: php
$query->select('prog.naimenovanie_programmi');
$query->join('INNER', '#__programma_meroprijatij AS prog ON prog.id = a.nazvanie_programmi');
*

ice77

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
Код: php
$query->select('prog.naimenovanie_programmi');
$query->join('INNER', '#__programma_meroprijatij AS prog ON prog.id = a.nazvanie_programmi');

Спасибо большое, все получилось!

Не подскажите где еще почитать можно о программирование на Joomla?
Заранее благодарю
« Последнее редактирование: 31.05.2017, 00:16:00 от ice77 »
*

ice77

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
*

ice77

  • Осваиваюсь на форуме
  • 40
  • 0 / 0
Возникла следующая проблема, раньше при нажатии переходил на определенную запись в другом компоненте.
Вот строки кода
Код: php
<a href="<?php echo JRoute::_('index.php?option=com_programma&view=meroprijatij&id='.$data_result[$item->id]->prog_id)?>"><?php echo $item->nazvanie_programmi; ?></a>
Сводная таблица двух компонентов:
Код: sql
$db = JFactory::getDbo(); 
$query = $db->getQuery(true);

$query->clear();
$query = '
SELECT plan.id as plan_id, prog.id as prog_id
FROM #__plan_obuchenie_ plan
INNER JOIN #__programma_meroprijatij prog ON plan.nazvanie_programmi = prog.naimenovanie_programmi
';

$db->setQuery($query);
$data_result = $db->loadObjectList('plan_id');
Сейчас при наведение на элемент не передается id.
Подскажите в чем может быть проблема?
Заранее благодарю
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Отправка файлов через ajax в модуль Joomla

Автор hemicide

Ответов: 19
Просмотров: 1053
Последний ответ 11.04.2022, 08:44:33
от sivers
Документация по разработки компонента для Joomla 3.x

Автор Aspik

Ответов: 9
Просмотров: 2896
Последний ответ 23.01.2021, 07:55:56
от hmr
Применение ajax (Аякс) в модуле Joomla

Автор tm2010

Ответов: 34
Просмотров: 3948
Последний ответ 26.09.2020, 09:38:35
от b2z
Обработка AJAX в компоненте Joomla!3

Автор balancer

Ответов: 33
Просмотров: 10317
Последний ответ 23.07.2020, 07:45:53
от Dolphin4ik_1
Пагинатор в нестандартном компоненте

Автор sesil

Ответов: 8
Просмотров: 727
Последний ответ 04.09.2019, 11:24:30
от sesil