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

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

Ошибка в компоненте при передаче параметров в форму для редактирования на стороне сайта

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

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

Сообщений: 89


« : 20.11.2016, 20:40:38 »

Здравствуйте!
Не могу передать параметры в форму для редактирования  в компоненте.
Из списка выведенных записей по ссылке (активное поле в записи)  JRoute::_('index.php?option=com_order&task=order.edit&id=' . (int) $item->id) переход в форму для редактирования
Представление:views\order\view.html.php:
Код:
<?php
// Запрет прямого доступа.
defined('_JEXEC') or die;

// Подключаем библиотеку представления Joomla.
jimport('joomla.application.component.view');

/**
 * HTML представление редактирования сообщения.
 */
class OrderViewOrder extends JViewLegacy
{
/**
* Сообщение.
*
* @var  object
*/
protected $item;

/**
* Объект формы.
*
* @var  object
*/
protected $form;

/**
* JavaScript файл валидации формы.
*
* @var  string
*/
protected $script;

/**
* Доступы пользователя.
*
* @var  object
*/
protected $canDo;

/**
* Отображает представление.
*
* @param   string  $tpl  Имя файла шаблона.
*
* @return  void
*
* @throws  Exception
*/
public function display($tpl = null)
{
try
{
// Получаем данные из модели.
$this->form = $this->get('Form');
$this->item = $this->get('Item');
$this->script = $this->get('Script');

// Получаем доступы пользователя.
//$this->canDo = OrderHelper::getActions($this->item->catid, $this->item->id);

// Устанавливаем панель инструментов.
//$this->addToolBar();

// Отображаем представление.
parent::display($tpl);

// Устанавливаем документ.
$this->setDocument();
}
catch (Exception $e)
{
throw new Exception($e->getMessage());
}
}


/**
* Метод для установки свойств документа.
*
* @return  void
*/
protected function setDocument()
{
$document = JFactory::getDocument();
$document->addScript(JURI::root(). $this->script);

}
}
views/order/tmpl/edit.php
Код:
<?php
// Запрет прямого доступа.
defined('_JEXEC') or die;

// Загружаем тултипы.
JHtml::_('bootstrap.tooltip');

// Загружаем проверку формы.
JHtml::_('behavior.formvalidation');

// Загружаем украшательства формы.
JHtml::_('formbehavior.chosen', 'select');

// Получаем параметры из формы.
$params = $this->form->getFieldsets('params');

?>
<script type="text/javascript">
Joomla.submitbutton = function(task) {
if (task == 'order.cancel' || document.formvalidator.isValid(document.id('order-form'))) {
Joomla.submitform(task, document.getElementById('order-form'));
}

}
</script>
<form action="<?php echo JRoute::_('index.php?option=com_order&layout=edit&id='.(int)$this->item->id); ?>" method="post" name="adminForm" id="order-form" class="form-validate">
<div class="row-fluid">
<div class="span12 form-horizontal">
<ul class="nav nav-tabs">
<li class="active"><a href="#general" data-toggle="tab"><?php echo JText::_('COM_ORDER_ORDER_DETAILS');?></a></li>
<?php foreach ($params as $name => $fieldset): ?>
<li><a href="#params-<?php echo $name;?>" data-toggle="tab"><?php echo JText::_($fieldset->label);?></a></li>
<?php endforeach; ?>
<?php if ($this->canDo->get('core.admin')): ?>
<li><a href="#permissions" data-toggle="tab"><?php echo JText::_('COM_ORDER_FIELDSET_RULES');?></a></li>
<?php endif ?>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="general">
<fieldset class="adminform">
<div class="row-fluid">
<?php foreach ($this->form->getFieldset('details') as $field): ?>
<div class="control-group form-inline">
<div class="control-label">
<?php echo $field->label; ?>
</div>
<div class="controls">
<?php echo $field->input; ?>
</div>
</div>
<?php endforeach; ?>
</div>
</fieldset>
</div>

<?php foreach ($params as $name => $fieldset): ?>
<div class="tab-pane" id="params-<?php echo $name;?>">
<?php if (isset($fieldset->description) && trim($fieldset->description)): ?>
<p class="tip"><?php echo $this->escape(JText::_($fieldset->description));?></p>
<?php endif;
foreach ($this->form->getFieldset($name) as $field) : ?>
<div class="control-group">
<?php echo $field->label; ?>
<div class="controls">
</div>
</div>
<?php endforeach; ?>
</div>
<?php endforeach; ?>

<?php if ($this->canDo->get('core.admin')): ?>
<div class="tab-pane" id="permissions">
<fieldset>
<?php echo $this->form->getInput('rules'); ?>
</fieldset>
</div>
<?php endif; ?>
</div>
</div>
<div>

<input type="hidden" name="task" value="order.edit" />
<?php echo JHtml::_('form.token'); ?>
</div>
</div>
</form>
models/order.php
Код:
<?php
// Запрет прямого доступа.
defined('_JEXEC') or die;

// Подключаем библиотеку modeladmin Joomla.
jimport('joomla.application.component.modeladmin');

/**
 * Модель Order.
 */
class OrderModelOrder extends JModelAdmin
{
/**
* Возвращает ссылку на объект таблицы, всегда его создавая.
*
* @param   string  $type    Тип таблицы для подключения.
* @param   string  $prefix  Префикс класса таблицы. Необязателен.
* @param   array   $config  Конфигурационный массив. Необязателен.
*
* @return  JTable  Объект JTable.
*/
public function getTable($type = 'Order', $prefix = 'OrderTable', $config = array())
{
return JTable::getInstance($type, $prefix, $config);
}

/**
* Метод для получения формы.
*
* @param   array    $data      Данные для формы.
* @param   boolean  $loadData  True, если форма загружает свои данные (по умолчанию), false если нет.
*
* @return  mixed  Объект JForm в случае успеха, в противном случае false.
*/
public function getForm($data = array(), $loadData = true)
{
// Получаем форму.
$form = $this->loadForm(
$this->option . '.order', 'order', array('control' => 'jform', 'load_data' => $loadData)
);

if (empty($form))
{
return false;
}

$id = JFactory::getApplication()->input->get('id', 0);
$user = JFactory::getUser();

// Изменяем форму исходя из доступов пользователя.
if ($id != 0 && (!$user->authorise('core.edit.state', $this->option . '.message.' . (int) $id))
|| ($id == 0 && !$user->authorise('core.edit.state', $this->option)))
{
// Модифицируем поля.
$form->setFieldAttribute('state', 'disabled', 'true');
echo "<p> 8888888</p>";
}

return $form;
}

/**
* Метод для получения скрипта, который будет включен в форму.
*
* @return  string  Файл скрипта.
*/
public function getScript()
{
return 'administrator/components/' . $this->option . '/models/forms/order.js';
}

/**
* Метод для получения данных, которые должны быть загружены в форму.
*
* @return  mixed  Данные для формы.
*/
protected function loadFormData()
{
// Проверка сессии на наличие ранее введеных в форму данных.
$data = JFactory::getApplication()->getUserState($this->option . '.edit.order.data', array());

if (empty($data))
{
$data = $this->getItem();
}

return $data;
}

/**
* Метод для проверки, может ли пользователь удалять существующую запись.
*
* @param   object  $record  Объект записи.
*
* @return  boolean  True, если разрешено удалять запись.
*/
protected function canDelete($record)
{
if (!empty($record->id))
{
return JFactory::getUser()->authorise('core.delete', $this->option . '.message.' . (int) $record->id);
}
else
{
return parent::canDelete($record);
}
}

/**
* Метод для проверки, может ли пользователь изменять состояние записи.
*
* @param   object  $record  Объект записи.
*
* @return  boolean  True, если разрешено  изменять состояние записи.
*/
protected function canEditState($record)
{
$user = JFactory::getUser();

if (!empty($record->id))
{
return $user->authorise('core.edit.state', $this->option . '.message.' . (int) $record->id);
}
elseif (!empty($record->catid))
{
return $user->authorise('core.edit.state', $this->option . '.category.' . (int) $record->catid);
}
else
{
return parent::canEditState($record);
}
}
}
models/forms/order.xml:
Код:
<?xml version="1.0" encoding="utf-8"?>
<form
addrulepath="/administrator/components/com_order/models/rules"
>
<fieldset  addrulepath="/administrator/components/com_order/models/fields" name="details">
<field
name="id"
type="hidden"
/>
<field
name="user_id"
type="text"
label="COM_ORDER_ORDER_FIELD_USER_ID_LABEL"
description="COM_ORDER_ORDER_FIELD_USER_ID_DESC"
size="5"
default="0"

/>
..........

<field
name="catid"
type="category"
extension="com_order"
class="inputbox"
default=""
label="COM_ORDER_ORDER_FIELD_CATID_LABEL"
description="COM_ORDER_ORDER_FIELD_CATID_DESC"

>
<option value="0">JOPTION_SELECT_CATEGORY</option>
</field>
<field
name="state"
type="list"
label="JSTATUS"
description="JFIELD_PUBLISHED_DESC"
class="inputbox"
size="1"
default="1"
>
<option value="1">JPUBLISHED</option>
<option value="0">JUNPUBLISHED</option>
<option value="2">JARCHIVED</option>
<option value="-2">JTRASHED</option>
</field>
</fieldset>
<fields name="params">
<fieldset
name="params"
label="JGLOBAL_FIELDSET_DISPLAY_OPTIONS"
>
<field
name="show_category"
type="radio"
label="COM_ORDER_ORDER_FIELD_SHOW_CATEGORY_LABEL"
description="COM_ORDER_ORDER_FIELD_SHOW_CATEGORY_DESC"
default=""
labelclass="control-label"
>
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
</fieldset>
</fields>
<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_order"
section="message"
/>
</fieldset>
</form>
В форму я получаю данные, но вот воспользоваться описанием поле из models/forms/order.xml не получается. Или я неправильно название формы передаю?
Помогите, пожалуйста
Записан
robert
Профи
********

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

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


« Ответ #1 : 20.11.2016, 23:08:17 »

models/forms/order.xml:
Код:
<fieldset  addrulepath="/administrator/components/com_order/models/fields" name="details">
Может быть, не addrulepath, а addfieldpath?
Записан
GuDeVic
Осваиваюсь на форуме
***

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

Сообщений: 89


« Ответ #2 : 21.11.2016, 12:11:37 »

Может быть, не addrulepath, а addfieldpath?
Это ссылка на файл с валидацией полей формы, а само описание полей формы находится в com_order/site/models/forms/order.hml и должно быть доступно (по умолчанию?).
Данные из записи, с которой осуществляется переход в форму для редактирования, у меня доступны по this->item->,  а не по this->form->item, поэтому, наверное, и доступа к fieldset нет.
Как сделать доступным this->form? Или как сделать доступной для формы редактирования fiedset из order.xml?
Записан
b2z
Support Team
*****

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

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


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


« Ответ #3 : 21.11.2016, 12:28:41 »

1. У Вас в модели кое-где ещё проскакивает message, видимо там order должно быть.
2. Описание поля - это которое в тултипе показывается (description)?

P.S.
Вместо
Код
<div class="control-group form-inline">
<div class="control-label">
<?php echo $field->label; ?>
</div>
<div class="controls">
<?php echo $field->input; ?>
</div>
</div>
можно использовать
Код
<?php echo $this->form->renderField($field->name); ?>
или
Код
<?php echo $field->renderField(); ?>

Только не забудьте добавить класс form-inline нужным полям в XML.

https://github.com/joomla/joomla-cms/blob/staging/layouts/joomla/form/renderfield.php
« Последнее редактирование: 21.11.2016, 12:40:27 от b2z » Записан
GuDeVic
Осваиваюсь на форуме
***

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

Сообщений: 89


« Ответ #4 : 21.11.2016, 13:14:07 »

1. У Вас в модели кое-где ещё проскакивает message, видимо там order должно быть.
2. Описание поля - это которое в тултипе показывается (description)?

P.S.
Вместо
Код
<div class="control-group form-inline">
<div class="control-label">
<?php echo $field->label; ?>
</div>
<div class="controls">
<?php echo $field->input; ?>
</div>
</div>
можно использовать
Код
<?php echo $this->form->renderField($field->name); ?>
или
Код
<?php echo $field->renderField(); ?>

Только не забудьте добавить класс form-inline нужным полям в XML.

https://github.com/joomla/joomla-cms/blob/staging/layouts/joomla/form/renderfield.php
Спасибо за ответ.
1. По поводу messages - я пока отключила проверку доступа (canDo), так что, вряд ли это влияет.
2. Нет, описание, это не для тултипов . Я вообще не могу использовать сведения из файла models/order/forms/ordrer.xml
в <?php foreach ($this->form->getFieldset('details') as $field): ?> в  views/order/tmpl/edit.php
Вообще могу значения полей  выводить используя только $this->item, а не $this->form->item
Записан
b2z
Support Team
*****

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

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


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


« Ответ #5 : 21.11.2016, 13:16:59 »

Цитировать
По поводу messages - я пока отключила проверку доступа (canDo), так что, вряд ли это влияет.
Ок, просто не забыть потом.

Цитировать
Вообще могу значения полей  выводить используя только $this->item, а не $this->form->item
Что показывает
Код
var_dump($this->form->getFieldset('details'));
Записан
GuDeVic
Осваиваюсь на форуме
***

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

Сообщений: 89


« Ответ #6 : 21.11.2016, 13:57:02 »

Ок, просто не забыть потом.
Что показывает
Код
var_dump($this->form->getFieldset('details'));
Н-И-Ч-Е-Г-О! Ничего не показывает - просто пустой экран на мониторе.
Записан
b2z
Support Team
*****

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

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


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


« Ответ #7 : 21.11.2016, 14:51:48 »

Ну а var_dump($this->form); ?
Записан
GuDeVic
Осваиваюсь на форуме
***

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

Сообщений: 89


« Ответ #8 : 21.11.2016, 15:21:10 »

Ну а var_dump($this->form); ?
echo "var_dump_this form=".var_dump($this->form);
bool(false) var_dump_this form=
Мне кажется, где-то c id и name формы намудрила - это ведь связано с расширениями в models и  views для order?
Да, в форме для редактирования  блок не нужен

Код:
<ul class="nav nav-tabs">
<li class="active"><a href="#general" data-toggle="tab"><?php echo JText::_('COM_ORDER_ORDER_DETAILS');?></a></li>
<?php foreach ($params as $name => $fieldset): ?>
<li><a href="#params-<?php echo $name;?>" data-toggle="tab"><?php echo JText::_($fieldset->label);?></a></li>
<?php endforeach; ?>
<?php if ($this->canDo->get('core.admin')): ?>
<li><a href="#permissions" data-toggle="tab"><?php echo JText::_('COM_ORDER_FIELDSET_RULES');?></a></li>
<?php endif ?>
</ul>
Записан
GuDeVic
Осваиваюсь на форуме
***

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

Сообщений: 89


« Ответ #9 : 21.11.2016, 15:40:49 »

Ну а var_dump($this->form); ?
вот так могу выводить данные site/views/order/tmpl/edit.php
Код:
<?php

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


//echo "var_dump_this form_fieldset=".var_dump($this->form->getFieldset('details'));
echo "var_dump_this form=".var_dump($this->form);
?>
<?php if ($this->item) : ?>
<form action="<?php echo JRoute::_('index.php?option=com_order&layout=edit&id='.(int)$this->item->id); ?>" method="post" name="adminForm" id="order-form" class="form-validate">
       
    <div class="item_fields">
        <table class="table">

 
<tr>
<th>state</th>
<td>
<i class="icon-<?php echo ($this->item->state == 1)? 'publish' : 'unpublish'; ?>"></i></td>
</tr>
<tr>
<th>user_cod</th>
<td><input type="text" name="user_cod" id="user_cod" value="<?php echo $this->item->user_cod; ?>"</td>
</tr>
<tr>
<th>user_lab_cod</th>
<td><input type="text" name="user_lab_cod" id="user_lab_cod" value="<?php echo $this->item->user_lab_cod; ?>"</td>
</tr>
<tr>
<th>shifr</th>
<td><?php echo $this->item->shifr; ?><?php echo $this->form->item->shifr; ?></td>
</tr>
<tr>
<th>state_order</th>
<td><?php echo $this->item->state_order; ?></td>
</tr>


        </table>
    </div>
   

        <div>
<input type="hidden" name="task" value="order.edit" />
<input type="submit" value="Отправить">
<input type="hidden" name="id" id="id" value="echo $this->item->id; ?>">
<?php echo JHtml::_('form.token'); ?>
</div>
<!-----
<?php //foreach ($this->form->getFieldset('details') as $field): ?>
<div class="control-group form-inline">
<div class="control-label">
<?php //echo $field->label; ?>
</div>
<div class="controls">
<?php //echo $field->input; ?>
</div>
</div>
<?php //endforeach; ?>
--->
</form>
    <?php
else:
    echo JText::_('COM_ORDER_ITEM_NOT_LOADED');
endif;
?>
Записан
robert
Профи
********

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

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


« Ответ #10 : 21.11.2016, 15:45:54 »

В модели после
Код
	public function getForm($data = array(), $loadData = true)
{
// Получаем форму.
$form = $this->loadForm(
$this->option . '.order', 'order', array('control' => 'jform', 'load_data' => $loadData)
);
 
делайте
Код
var_dump($form);exit($this->option);
 
Записан
GuDeVic
Осваиваюсь на форуме
***

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

Сообщений: 89


« Ответ #11 : 21.11.2016, 15:53:37 »

В модели после
Код
	public function getForm($data = array(), $loadData = true)
{
// Получаем форму.
$form = $this->loadForm(
$this->option . '.order', 'order', array('control' => 'jform', 'load_data' => $loadData)
);
 
делайте
Код
var_dump($form);exit($this->option);
 
сделала. Прямо копипастом перенесла
Код:
public function getForm($data = array(), $loadData = true)
{
// Получаем форму.
$form = $this->loadForm(
$this->option . '.order', 'order', array('control' => 'jform', 'load_data' => $loadData)
);
var_dump($form);
exit($this->option);
На пустом экране появляется bool(false) com_order
Записан
robert
Профи
********

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

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


« Ответ #12 : 21.11.2016, 16:06:38 »

Даже не знаю, что искать, все странно как-то. Проверьте order.xml, ничего лишнего нет или не хватает чего? И никаких сообщений, предупреждений (показ ошибок включен?)?
Код:
<fieldset  addrulepath="/administrator/components/com_order/models/fields" name="details">
Что там у вас в папке fields?
« Последнее редактирование: 21.11.2016, 16:12:22 от robert » Записан
GuDeVic
Осваиваюсь на форуме
***

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

Сообщений: 89


« Ответ #13 : 21.11.2016, 17:49:00 »

Даже не знаю, что искать, все странно как-то. Проверьте order.xml, ничего лишнего нет или не хватает чего? И никаких сообщений, предупреждений (показ ошибок включен?)?Что там у вас в папке fields?
Показ ошибок не включен.
В папке fields лежат файлы типа mylist (если тип поля в fieldset задан
Код:
<?php
defined('_JEXEC') or die('Restricted access');
 
jimport('joomla.form.formfield');
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
 
class JFormFieldMyList extends JFormFieldList
{
protected function getOptions()
{
$option[] = JHtml::_('select.option', '', '-Укажите подразделение-');
$db =& JFactory::getDBO();
$query = $db->getQuery(true);
 
$query->select('h.nstr as value, h.name_short as text');
 
$query->from('#__lab AS h');
$db->setQuery($query);
$messages = $db->loadObjectList();
 
foreach ($messages as $msg)
$options[] = JHTML::_('select.option', $msg->value, $msg->text);
$options = array_merge($option, $options);
return $options;
}
}
?>

в site/models/forms/order.xml остались самые простые поля
Код:
<?xml version="1.0" encoding="utf-8"?>
<form addrulepath="/administrator/components/com_order/models/rules" >
<fieldset addrulepath="/administrator/components/com_order/models/fields" name="details">
<field
name="id"
type="hidden"
/>
<field
name="user_id"
type="text"
label="COM_ORDER_ORDER_FIELD_USER_ID_LABEL"
description="COM_ORDER_ORDER_FIELD_USER_ID_DESC"
size="5"
default="0"

/>
<field
name="user_cod"
type="text"
label="COM_ORDER_ORDER_FIELD_USER_COD_LABEL"
description="COM_ORDER_ORDER_FIELD_USER_COD_DESC"
size="5"
default="0"


/>
<field
name="user_lab_cod"
type="text"
label="COM_ORDER_ORDER_FIELD_USER_LAB_COD_LABEL"
description="COM_ORDER_ORDER_FIELD_USER_LAB_COD_DESC"
size="5"
default="0"


/>

<field
name="tip"
type="text"
label="COM_ORDER_ORDER_FIELD_TIP_LABEL"
description="COM_ORDER_ORDER_FIELD_TIP_DESC"

size="5"
default="1"
>
<field
name="shifr"
type="text"
label="COM_ORDER_ORDER_FIELD_SHIFR_LABEL"
description="COM_ORDER_ORDER_FIELD_SHIFR_DESC"
size="15"
/>
</fieldset>

</form>
Записан
b2z
Support Team
*****

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

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


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


« Ответ #14 : 21.11.2016, 19:03:37 »

Где-то маленькая ошибка, а вот где - неясно. Тут нужно настроить полноценную отладку, чтобы понять. С var_dump конечно тяжко...
Если метод loadForm() возвращает false, значит нужно лезть в JModelForm и смотреть, что происходит в loadForm() и в какой момент сбивается код.
Записан
GuDeVic
Осваиваюсь на форуме
***

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

Сообщений: 89


« Ответ #15 : 21.11.2016, 19:50:22 »

Где-то маленькая ошибка, а вот где - неясно. Тут нужно настроить полноценную отладку, чтобы понять. С var_dump конечно тяжко...
Если метод loadForm() возвращает false, значит нужно лезть в JModelForm и смотреть, что происходит в loadForm() и в какой момент сбивается код.
JModelForm где?
Где-то маленькая ошибка, а вот где - неясно. Тут нужно настроить полноценную отладку, чтобы понять. С var_dump конечно тяжко...
Если метод loadForm() возвращает false, значит нужно лезть в JModelForm и смотреть, что происходит в loadForm() и в какой момент сбивается код.
Спасибо за участие. А где можно посмотреть JModelForm?
Записан
robert
Профи
********

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

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


« Ответ #16 : 21.11.2016, 23:08:16 »

Закрывайте тэг field:
Код
<field/>
Записан
GuDeVic
Осваиваюсь на форуме
***

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

Сообщений: 89


« Ответ #17 : 22.11.2016, 09:55:12 »

Закрывайте тэг field:
Код
<field/>
Спасибо за совет. У меня поля в fieldst имеют вид:
Код:
<field
name="id"
type="hidden"
/>
Разве это не <field />?
И ведь в административной части все работает.
Записан
robert
Профи
********

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

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


« Ответ #18 : 22.11.2016, 10:12:08 »

Код:
<field
name="tip"
type="text"
label="COM_ORDER_ORDER_FIELD_TIP_LABEL"
description="COM_ORDER_ORDER_FIELD_TIP_DESC"

size="5"
default="1"
>
И ведь в административной части все работает.
А тут поподробнее, я до сих пор был уверен, что речь шла об админке.
Записан
GuDeVic
Осваиваюсь на форуме
***

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

Сообщений: 89


« Ответ #19 : 22.11.2016, 10:23:33 »

А тут поподробнее, я до сих пор был уверен, что речь шла об админке.
Вообще-то название моей просьбы о помощи Ошибка в компоненте при передаче параметров в форму для редактирования на стороне сайта
Записан
robert
Профи
********

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

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


« Ответ #20 : 22.11.2016, 10:42:45 »

Вообще-то название моей просьбы о помощи Ошибка в компоненте при передаче параметров в форму для редактирования на стороне сайта
Да, как-то не обращал внимания.
Включите режим показа ошибок, без них будете долго гадать.
А где можно посмотреть JModelForm?
/libraries/legacy/model/form.php
Выложите код ControllerOrder.
« Последнее редактирование: 22.11.2016, 10:51:08 от b2z » Записан
GuDeVic
Осваиваюсь на форуме
***

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

Сообщений: 89


« Ответ #21 : 22.11.2016, 10:55:04 »

Да, как-то не обращал внимания.
Включите режим показа ошибок, без них будете долго гадать./libraries/model/form.php
Выложите код ControllerOrder.
Вот ControllerOrder:
Код:
<?php
// Запрет прямого доступа.
defined('_JEXEC') or die;

// Подключаем библиотеку контроллера Joomla.
jimport('joomla.application.component.controller');

/**
 * Общий контроллер компонента Order.
 */
class OrderController extends JControllerLegacy
{
/**
* Задача по отображению.
*
* @param   boolean  $cachable   Если true, то представление будет закешировано.
* @param   array    $urlparams  Массив безопасных url-параметров и их валидных типов переменных.
*
* @return  void
*/

public function display($cachable = false, $urlparams = array())
{
// Устанавливаем представление по умолчанию, если оно не было установлено.
$input = JFactory::getApplication()->input;

 $input->set('view', $input->getCmd('view', '<?php echo $input; ?>'));
parent::display($cachable);
}
}
Администратор включал показ ошибок (в configuration.php в  public $error_reporting = ‘default’:менял на E_ALL ничего не показывает), м.б. надо было E_ALL | E_STRICT
Записан
robert
Профи
********

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

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


« Ответ #22 : 22.11.2016, 11:02:26 »

Прямо в index.php в начале поставьте
Код
error_reporting(E_ALL);
ini_set("display_errors",1);
 
Не общий контроллер, а OrderControllerOrder.
Записан
GuDeVic
Осваиваюсь на форуме
***

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

Сообщений: 89


« Ответ #23 : 22.11.2016, 11:19:03 »

Прямо в index.php в начале поставьте
Код
error_reporting(E_ALL);
ini_set("display_errors",1);
 
Не общий контроллер, а OrderControllerOrder.
OrderControllerOrder
Код:
<?php
// Запрет прямого доступа.
defined('_JEXEC') or die;

// Подключаем библиотеку controllerform Joomla.
jimport('joomla.application.component.controllerform');

/**
 * Order контроллер.
 */
class OrderControllerOrder extends JControllerForm
{
/**
* Переопределение метода для проверки,
* может ли пользователь добавлять запись.
*
* @param   array  $data  Массив данных.
*
* @return  boolean  True, если разрешено редактировать запись.
*/
protected function allowAdd($data = array())
{
// Получаем значение категории из массива.
$categoryId = JArrayHelper::getValue($data, 'catid', JFactory::getApplication()->input->getInt('filter_category_id', 0), 'int');

if ($categoryId)
{
// Проверка добавления на уровне категории.
return JFactory::getUser()->authorise('core.create', $this->option . '.category.' . $categoryId);
}
else
{
// Проверка добавления на уровне компонента.
return parent::allowAdd($data);
}
}

/**
* Переопределение метода для проверки,
* может ли пользователь редактировать существующую запись.
*
* @param   array   $data  Массив данных.
* @param   string  $key   Имя первичного ключа.
*
* @return  boolean  True, если разрешено редактировать запись.
*/
protected function allowEdit($data = array(), $key = 'id')
{
$recordId = (int) isset($data[$key])? $data[$key] : 0;

if ($recordId)
{
// Проверка редактирования на уровне записи.
return JFactory::getUser()->authorise('core.edit', $this->option . '.message.' . $recordId);
}
else
{
// Проверка редактирования на уровне компонента.
return parent::allowEdit($data, $key);
}
}
}

Записан
robert
Профи
********

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

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


« Ответ #24 : 22.11.2016, 11:38:05 »

В allowEdit(): почему "message", а не "order"?
Сообщения об ошибках есть?
Записан
GuDeVic
Осваиваюсь на форуме
***

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

Сообщений: 89


« Ответ #25 : 22.11.2016, 11:55:50 »

В allowEdit(): почему "message", а не "order"?
Сообщения об ошибках есть?
исправила alloeEdit. Сообщений об ошибках нет (правда, администратор в configuration.php уже убрал опцию сообщений об ошибках).
в модели в форму не получаю: return false;
Код:
public function getForm($data = array(), $loadData = true)
{
// Получаем форму.
$form = $this->loadForm(
$this->option . '.order', 'order', array('control' => 'jform', 'load_data' => $loadData)
);

if (empty($form))
{
[b]return false;[/b]
}
Записан
GuDeVic
Осваиваюсь на форуме
***

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

Сообщений: 89


« Ответ #26 : 22.11.2016, 11:59:37 »


Переход в форму редактирования по ссылке (активное поле записи в списке выведенных на сайт записей):
Код:
<a href="<?php echo JRoute::_('index.php?option=com_order&task=order.edit&id=' . (int) $item->id); ?>">
Записан
robert
Профи
********

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

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


« Ответ #27 : 22.11.2016, 12:19:32 »

Сообщений об ошибках нет (правда, администратор в configuration.php уже убрал опцию сообщений об ошибках).
Вы кто, если не администратор? Неважно, вы это:
Прямо в index.php в начале поставьте
Код
error_reporting(E_ALL);
ini_set("display_errors",1);
 
сделали? Ошибки и предупреждения должны показываться. Если же их нет и все в админке работает, то дело, скорее всего, в отсутствии каких-то прав.
В общем, это "лечение на расстоянии" очень неэффективно и утомляет, а мне уже нужно идти. Попробуйте делать проверки прямо в JModelForm.
Записан
GuDeVic
Осваиваюсь на форуме
***

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

Сообщений: 89


« Ответ #28 : 22.11.2016, 12:35:19 »


Спасибо за советы. Извините, что отняла у вас время.
Записан
Aleks.Denezh
Практически профи
*******

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

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



« Ответ #29 : 22.11.2016, 13:40:13 »

В allowEdit(): почему "message", а не "order"?
Сообщения об ошибках есть?
Зачем вообще лезть сюда.. если тут проблема будет то форма редактирования будет банально недоступна... админка её не отобразит и выдаст что нет доступа..

GuDeVic покажите скрин того что видите при входе в форму редактирования
Записан
Страниц: [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