3

我创建了一个带有表单的自定义组件来更新要在前端显示的四种产品的价格。

我的主要控制器代码在这里:

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); ?>

请建议我在哪里做错了。这是第三天,我在挠头。:(

4

1 回答 1

4

您可以随时在代码中更新操作(或调用它们)。新实例或更新新实例 - 只需if在代码中再添加一个并hidden在表单上输入。例如:

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

于 2013-04-05T11:24:54.310 回答