Хобрук: Ваш путь к мастерству в программировании

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;
}

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

код для ценового контейнера:

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

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

Ошибка: вам не разрешено использовать эту ссылку для прямого доступа к этой странице (№ 1).

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

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

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


  • а если вы установите действие формы как <?php echo JRoute::_('index.php?option=com_calculator&view=pricetable&task=pricetable.edit&id='.(int) $this->item->id); ?>? 05.04.2013
  • С этим тоже ничего не происходит. То, что я думаю, является проблемой с ценой контроллера. Нет ли способа перенаправить компонент на administrator/index.php?option=com_calculator&task=pricetable.edit&id=1 при его первой загрузке. 05.04.2013
  • Я думаю, вы можете обновить данные на той же странице, что и вы. нигде более. поэтому просто сделайте это поле пустым (action), чтобы убедиться, что вы остаетесь на той же странице... 05.04.2013
  • @StasGrin, сохраняя действие пустым, сохраняет данные формы в новый экземпляр, но не обновляет существующий. 05.04.2013
  • поэтому? вы можете выполнять действия по обновлению (или вызывать их) внутри вашего кода, когда бы это ни было. Новый экземпляр или обновить новый - добавить еще один вход IF и hidden, например, name=task value=update 05.04.2013
  • Использование пустого action="" и добавление скрытого поля <input type="hidden" name="id" value="1" /> сработало. Ты спас мне жизнь @StasGrin. Спасибо. 05.04.2013
  • о.. это было так очевидно, что я не верю, что это решение. опубликовано как ответ на закрытие этого вопроса. 05.04.2013

Ответы:


1

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

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

05.04.2013
Новые материалы

Декларативное и функциональное программирование в стиле LINQ с использованием JavaScript с использованием каррирования и генератора ...
LINQ - одна из лучших функций C #, которая обеспечивает элегантный способ написания кода декларативного и функционального стиля, который легко читать и понимать. Благодаря таким функциям ES6,..

Структуры данных в C ++ - Часть 1
Реализация общих структур данных в C ++ C ++ - это расширение языка программирования C, которое поддерживает создание классов, поэтому оно известно как C с классами . Он используется для..

Как я опубликовал свое первое приложение в App Store в 13 лет
Как все началось Все началось три года назад летом после моего четвертого класса в начальной школе. Для меня, четвертого класса, лето кажется бесконечным, пока оно не закончится, и мой отец..

Что в лицо
Очерк о возвращении физиогномики и о том, почему мы должны это приветствовать. История начинается со странной науки. Р. Тора Бьорнсдоттир, Николас О. Рул. Видимость социального класса по..

Почему шаблоны проектирования и почему нет?
Сложность — мать всех проблем в программировании. Программное обеспечение должно быть разработано с точки зрения того, кто его поддерживает, а не того, кто его пишет, потому что программное..

Создание дизайна обуви с помощью машинного обучения
Обувь. Что подождать? Я думал, что речь пойдет о машинном обучении! Ну это так. Если бы вы пошли на Amazon, сколько обуви вы бы нашли? Наверное, много, не так ли? Но много ли в них..

GraalVM в 2022 году: итоги года
2022 год был очень продуктивным для проекта и сообщества GraalVM. Вместе мы разработали множество новых функций, выпустили GraalVM для последних версий Java и новых платформ и увидели несколько..