Новости Joomla

Как тестировать Joomla PHP-разработчику? Компонент Patch tester.

👩‍💻 Как тестировать Joomla PHP-разработчику? Компонент Patch tester.Joomla - open source PHP-фреймворк с готовой админкой. Его основная разработка ведётся на GitHub. Для того, чтобы международному сообществу разработчиков было удобнее тестировать Pull Requests был создан компонент Patch Tester, который позволяет "накатить" на текущую установку Joomla именно те изменения, которые необходимо протестировать. На стороне инфраструктуры Joomla для каждого PR собираются готовые пакеты, в которых находится ядро + предложенные изменения. В каждом PR обычно находятся инструкции по тестированию: куда зайти, что нажать, ожидаемый результат. Тестировщики могут предположить дополнительные сценарии, исходя из своего опыта и найти баги, о которых сообщить разработчику. Или не найти, и тогда улучшение или исправление ошибки быстрее войдёт в ядро Joomla. Напомню, что для того, чтобы PR вошёл в ядро Joomla нужны минимум 2 положительных теста от 2 участников сообщества, кроме автора. Видео на YouTubeВидео на VK ВидеоВидео на RuTubeКомпонент на GitHub https://github.com/joomla-extensions/patchtester@joomlafeed#joomla #php #webdev #community

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6.2PageBuilder Toolkit - это специализированный плагин для конструктора страниц Yootheme Pro, содержит набор различных утилит для ускорения процесса работы и отладки макета, множественные улучшения в интерфейсе, включая поддержку dark mode, подсказки, быстрая смена разрешения в окне просмотра и много чего еще.v.1.6.2 Что нового?- Индикатор статусов: теперь не просто показывает состояние запросов, но и делает автоматические попытки их отправки при кратковременных сбоях в сети, а если это не помогло, то переводит конструктор в ручной режим, что позволяет сохранит макет и настройки темы прежде чем вы потеряете все, что было сделано с момента последнего сохранения- Подсветка ошибок в макете: плагин анализирует код страницы и может автоматически подсвечивать data атрибуты с кучей мусора, которые попадают в код страницы при копипасте из Figma в TinyMCE (пригодится для старых макетов, в текущей работе плагин сам очищает код мусора). Также есть подсветка семантических ошибок сборки - дубли h1 тега на странице и вложенных друг в друга заголовков.- Улучшена поддержка будущего релиза Yootheme Pro 5 и редактора CodeMirror 6Плагин для русскоязычных пользователей доступен в каталоге расширений SovMart и распространяется за символическую плату (100р). Разработчики Joomla расширений и партнеры автора могут получить плагин бесплатно.Для работы плагина необходим конструктор страниц Yootheme Pro.Разработчик плагина - участник нашего сообщества Александр Судьбинов (@alexrevo), член официальной группы поддержки Yootheme Pro. Страница расширенияОписание на сайте автора@joomlafeed#joomla #yootheme

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

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Здравствуйте!
Не могу передать параметры в форму для редактирования  в компоненте.
Из списка выведенных записей по ссылке (активное поле в записи)  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

  • Живу я здесь
  • 4974
  • 457 / 20
models/forms/order.xml:
Код
	<fieldset  addrulepath="/administrator/components/com_order/models/fields" name="details">
Может быть, не addrulepath, а addfieldpath?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

GuDeVic

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

b2z

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

P.S.
Вместо
Код: php
<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
<?php echo $this->form->renderField($field->name); ?>
или
Код: php
<?php echo $field->renderField(); ?>

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

https://github.com/joomla/joomla-cms/blob/staging/layouts/joomla/form/renderfield.php
*

GuDeVic

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

P.S.
Вместо
Код: php
<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
<?php echo $this->form->renderField($field->name); ?>
или
Код: php
<?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

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Цитировать
По поводу messages - я пока отключила проверку доступа (canDo), так что, вряд ли это влияет.
Ок, просто не забыть потом.

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

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Ок, просто не забыть потом.
Что показывает
Код: php-brief
var_dump($this->form->getFieldset('details'));
Н-И-Ч-Е-Г-О! Ничего не показывает - просто пустой экран на мониторе.
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Ну а 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

  • Захожу иногда
  • 228
  • 0 / 0
Ну а 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

  • Живу я здесь
  • 4974
  • 457 / 20
В модели после
Код: php-brief
	public function getForm($data = array(), $loadData = true)
{
// Получаем форму.
$form = $this->loadForm(
$this->option . '.order', 'order', array('control' => 'jform', 'load_data' => $loadData)
);
делайте
Код: php-brief
var_dump($form);exit($this->option);
Не будь паразитом, сделай что-нибудь самостоятельно!
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
В модели после
Код: php-brief
	public function getForm($data = array(), $loadData = true)
{
// Получаем форму.
$form = $this->loadForm(
$this->option . '.order', 'order', array('control' => 'jform', 'load_data' => $loadData)
);
делайте
Код: php-brief
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

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

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Даже не знаю, что искать, все странно как-то. Проверьте 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

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

GuDeVic

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

robert

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

GuDeVic

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

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Код
		<field
name="tip"
type="text"
label="COM_ORDER_ORDER_FIELD_TIP_LABEL"
description="COM_ORDER_ORDER_FIELD_TIP_DESC"

size="5"
default="1"
>
И ведь в административной части все работает.
А тут поподробнее, я до сих пор был уверен, что речь шла об админке.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

GuDeVic

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

robert

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

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Да, как-то не обращал внимания.
Включите режим показа ошибок, без них будете долго гадать./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

  • Живу я здесь
  • 4974
  • 457 / 20
Прямо в index.php в начале поставьте
Код: php-brief
error_reporting(E_ALL);
ini_set("display_errors",1);
Не общий контроллер, а OrderControllerOrder.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Прямо в index.php в начале поставьте
Код: php-brief
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

  • Живу я здесь
  • 4974
  • 457 / 20
В allowEdit(): почему "message", а не "order"?
Сообщения об ошибках есть?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
В 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

  • Захожу иногда
  • 228
  • 0 / 0

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

robert

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

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
*

Aleks.Denezh

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

GuDeVic покажите скрин того что видите при входе в форму редактирования
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Странная ошибка

Автор borro

Ответов: 6
Просмотров: 2670
Последний ответ 31.07.2020, 17:19:58
от NewUsers
Обработка AJAX в компоненте Joomla!3

Автор balancer

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

Автор sesil

Ответов: 8
Просмотров: 1330
Последний ответ 04.09.2019, 11:24:30
от sesil
Ошибка при выводе пользовательского поля

Автор Glorius

Ответов: 7
Просмотров: 1006
Последний ответ 13.08.2019, 23:16:39
от sivers
Не видится файлы языкового пакета в созданном компоненте

Автор khachatur86

Ответов: 0
Просмотров: 1802
Последний ответ 30.03.2019, 23:35:26
от khachatur86