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

ID設置爲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

如果您將表單操作設置爲'<?php echo JRoute :: _('index.php?option = com_calculator&view = pricetable&task = pricetable.edit&id ='。(int)$ this-> item-> id) ;?>'? – 2013-04-05 09:11:59

+0

這也沒有什麼反應。我認爲是可控制的控制器的問題。是不是有任何方法將組件重定向到管理員/ index.php?option = com_calculator&task = pr icetable.edit&id = 1'在第一次加載時。 – Harpreet 2013-04-05 09:18:01

+1

我想你可以在同一頁面上更新數據。無處。所以只要將此字段設爲空('action')以確保您保持在同一頁面上... – StasGrin 2013-04-05 10:14:16

回答

4

你可以做更新動作(或稱他們),你的代碼中,只要它是 新實例或更新新的 - 只是多加一個代碼ifhidden輸入的形式,例如:。

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