Форум русской поддержки Joomla!® CMS
27.06.2017, 21:36:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1] 2 3  Все   Вниз
  Добавить закладку  |  Печать  
Автор

Изменения id для отображения названия в компоненте Joomla

 (Прочитано 730 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ice77
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 34


« : 29.05.2017, 15:13:06 »

Добрый день, подскажите пожалуйста как поменять в данной строчке
Код:
<?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
Завсегдатай
*****

Репутация: +39/-0
Offline Offline

Пол: Мужской
Сообщений: 542


« Ответ #1 : 29.05.2017, 15:27:03 »

так чтобы показывало  название а не id.Ниже представлен, код всего компонента.

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

Репутация: +0/-0
Offline Offline

Сообщений: 34


« Ответ #2 : 29.05.2017, 17:01:38 »

У меня есть два компонента:
Во втором внешний ключ и связан с 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
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 34


« Ответ #3 : 29.05.2017, 17:02:38 »

Посмотри что содержит переменная $this->items
Код
<?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, 17:06:39 от ice77 » Записан
b2z
Support Team
*****

Репутация: +734/-0
Offline Offline

Пол: Мужской
Сообщений: 7725


Разраблю понемногу


« Ответ #4 : 29.05.2017, 18:35:01 »

$this->items - это результат этого запроса? Если да, то я не вижу в запросе выборки поля nazvanie_programmi.
Записан
ice77
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 34


« Ответ #5 : 29.05.2017, 20:35:08 »

$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
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 34


« Ответ #6 : 29.05.2017, 20:37:04 »

Посмотри что содержит переменная $this->items
Код
<?php print_r($this->items); ?>
А
Код
<?php print_r($this->items); ?>
выдает:
    
Код
 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
Профи
********

Репутация: +375/-14
Offline Offline

Пол: Мужской
Сообщений: 4081


« Ответ #7 : 29.05.2017, 21:51:31 »

3 раза прочитал, ни черта не понял.
Записан
almika
Давно я тут
****

Репутация: +22/-0
Offline Offline

Пол: Женский
Сообщений: 267



« Ответ #8 : 30.05.2017, 05:15:16 »

Насколько я поняла, вы хотите вывести значение поля 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
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 34


« Ответ #9 : 30.05.2017, 10:21:33 »

Насколько я поняла, вы хотите вывести значение поля 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
Support Team
*****

Репутация: +734/-0
Offline Offline

Пол: Мужской
Сообщений: 7725


Разраблю понемногу


« Ответ #10 : 30.05.2017, 10:31:31 »

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

Репутация: +0/-0
Offline Offline

Сообщений: 34


« Ответ #11 : 30.05.2017, 10:55:09 »

Ну так добавьте в 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');

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

Репутация: +734/-0
Offline Offline

Пол: Мужской
Сообщений: 7725


Разраблю понемногу


« Ответ #12 : 30.05.2017, 12:50:52 »

Да
Записан
ice77
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 34


« Ответ #13 : 30.05.2017, 13:15:09 »

Да
Добавил поле: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
Support Team
*****

Репутация: +734/-0
Offline Offline

Пол: Мужской
Сообщений: 7725


Разраблю понемногу


« Ответ #14 : 30.05.2017, 13:42:06 »

Всё правильно.

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

Репутация: +0/-0
Offline Offline

Сообщений: 34


« Ответ #15 : 30.05.2017, 13:57:37 »

Всё правильно.
Значит где-то ещё 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
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 34


« Ответ #16 : 30.05.2017, 13:58:57 »

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

Репутация: +734/-0
Offline Offline

Пол: Мужской
Сообщений: 7725


Разраблю понемногу


« Ответ #17 : 30.05.2017, 14:46:05 »

Сюда добавьте:
$query->select('`#__plan_obuchenie__2710829`.`nazvanie_programmi` AS obuchenies_fk_value_2710829');

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

Кстати, а зачем в названиях таблиц цифры?
Записан
ice77
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 34


« Ответ #18 : 30.05.2017, 15:02:07 »

Сюда добавьте:
$query->select('`#__plan_obuchenie__2710829`.`nazvanie_programmi` AS obuchenies_fk_value_2710829');

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

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

Это от внешнего ключа было. При print_r
Записан
ice77
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 34


« Ответ #19 : 30.05.2017, 15:27:27 »

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, 15:30:41 от ice77 » Записан
b2z
Support Team
*****

Репутация: +734/-0
Offline Offline

Пол: Мужской
Сообщений: 7725


Разраблю понемногу


« Ответ #20 : 30.05.2017, 15:32:16 »

Короче, Вам нужно INNER JOIN #__programma_meroprijatij добавить в запрос getListQuery()
Записан
ice77
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 34


« Ответ #21 : 30.05.2017, 15:33:30 »

Короче, Вам нужно INNER JOIN #__programma_meroprijatij добавить в запрос getListQuery()
Подскажите как это сделать? И где должен изменить? заранее благодарю
Записан
almika
Давно я тут
****

Репутация: +22/-0
Offline Offline

Пол: Женский
Сообщений: 267



« Ответ #22 : 30.05.2017, 19:18:00 »

Короче, Вам нужно 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, 19:31:57 от almika » Записан
ice77
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 34


« Ответ #23 : 30.05.2017, 20:42:45 »

Зачем?

Вот так надо:
Код:
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, 20:48:30 от ice77 » Записан
b2z
Support Team
*****

Репутация: +734/-0
Offline Offline

Пол: Мужской
Сообщений: 7725


Разраблю понемногу


« Ответ #24 : 30.05.2017, 23:12:42 »

Код
$query->select('prog.naimenovanie_programmi');
$query->join('INNER', '#__programma_meroprijatij AS prog ON prog.id = a.nazvanie_programmi');
Записан
ice77
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 34


« Ответ #25 : 31.05.2017, 01:08:45 »

Код
$query->select('prog.naimenovanie_programmi');
$query->join('INNER', '#__programma_meroprijatij AS prog ON prog.id = a.nazvanie_programmi');

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

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

Репутация: +734/-0
Offline Offline

Пол: Мужской
Сообщений: 7725


Разраблю понемногу


« Ответ #26 : 31.05.2017, 11:19:23 »

Тыц
Записан
ice77
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 34


« Ответ #27 : 31.05.2017, 12:22:17 »

Спасибо.
Записан
ice77
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 34


« Ответ #28 : 02.06.2017, 16:41:03 »

Возникла следующая проблема, раньше при нажатии переходил на определенную запись в другом компоненте.
Вот строки кода
Код
<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>
 
Сводная таблица двух компонентов:
Код
$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
Support Team
*****

Репутация: +734/-0
Offline Offline

Пол: Мужской
Сообщений: 7725


Разраблю понемногу


« Ответ #29 : 02.06.2017, 16:45:02 »

Ну надо смотреть, что в $data_result
Записан
Страниц: [1] 2 3  Все   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet