3

Я создал пользовательский компонент с формой для обновления цен на четыре продукта для отображения на интерфейсе.Joomla: ошибка при сохранении формы в пользовательском представлении

Мой главный контроллер код здесь:

public function display($cachable = false, $urlparams = false) { 

    require_once JPATH_COMPONENT.'/helpers/calculator.php'; 

    $view  = JFactory::getApplication()->input->getCmd('view', 'pricetable'); 
    $layout  = JFactory::getApplication()->input->getCmd('layout', 'edit'); 

    JFactory::getApplication()->input->set('layout', $layout); 
    JFactory::getApplication()->input->set('view', $view); 
    JFactory::getApplication()->input->set('id', 1); 

    parent::display($cachable, $urlparams); 
    return $this; 
} 

идентификатор устанавливается равным 1, чтобы он загружает только первую строку из базы данных.

кода pricetable контейнера:

function __construct() { 
    $this->view_list = 'pricetable'; 
    parent::__construct(); 
} 

В настоящее время в администраторе бэкэнда загружена форма по желанию с первой строкой данных. Когда я пытаюсь сохранить форму он перенаправлен administrator/index.php?option=com_calculator&view=pricetable и ошибок:

Error: You are not permitted to use that link to directly access that page (#1).

моя форма действия:

<?php echo JRoute::_('index.php?option=com_calculator&task=pricetable.edit&id='.(int) $this->item->id); ?> 

Пожалуйста, предложите, где я делаю неправильно. Уже третий день я царапаю себе голову. :(

+0

, и если вы установите действие формы как ' item-> id) ;?> '? –

+0

С этим ничего не происходит. Я думаю, что это проблема с ценным контроллером. Нет ли способа перенаправления компонента на' administrator/index.php? Option = com_calculator & task = pr icetable.edit & id = 1' при первой загрузке. – Harpreet

+1

Я думаю, что вы можете обновлять данные на той же странице. нигде более. поэтому просто сделайте это поле пустым ('action'), чтобы убедиться, что вы остаетесь на одной странице ... – StasGrin

ответ

4

Вы можете сделать обновление действия (или называя их) внутри кода всякий раз, когда это Новый экземпляр или обновить новый - просто добавить еще один if в коде и hidden вход в форме, например:..

<input type="hidden" name="task" value="update" />

Смежные вопросы