如何添加添加到管理员的链接 category_id ? (Joomla 2.5)
您可以在函数JToolBarHelper::addNew('select.add');
或其他函数中编写...
例如,
?请帮忙。提前致谢的index.php选项= com_pictures&安培;图=选择&安培;布局编辑=&安培;的 CATEGORY_ID = 14
回复David F:
嗨,大卫F.我几乎得到了它 点击“添加”后显示category_id=14
,其余信息在点击“修改”,“保存”,“保存关闭”后显示无效... category_id=0
...
protected $catid;
public function __construct($config = array()) {
parent::__construct($config);
if (empty($this->catid)) {
$this->catid = JRequest::getInt('category_id', 0);
}
}
protected function allowAdd($data = array()) {
$user = JFactory::getUser();
$categoryId = JArrayHelper::getValue($data, 'catid', JRequest::getInt('filter_category_id'), 'int');
$allow = null;
if ($categoryId) {
$allow = $user->authorise('core.create', $this->option . '.category.' . $categoryId);
}
if ($allow === null) {
return parent::allowAdd($data);
} else {
return $allow;
}
}
protected function allowEdit($data = array(), $key = 'id') {
$recordId = (int) isset($data[$key]) ? $data[$key] : 0;
$categoryId = 0;
if ($recordId) {
$categoryId = (int) $this->getModel()->getItem($recordId)->catid;
}
if ($categoryId) {
return JFactory::getUser()->authorise('core.edit', $this->option . '.category.' . $categoryId);
} else {
return parent::allowEdit($data, $key);
}
}
protected function getRedirectToItemAppend($recordId = null, $urlVar = 'id') {
$append = parent::getRedirectToItemAppend($recordId);
$append .= '&category_id=' . $this->category_id;
return $append;
}
protected function getRedirectToListAppend() {
$append = parent::getRedirectToListAppend();
$append .= '&category_id=' . $this->category_id;
return $append;
}
答案 0 :(得分:0)
我相信您正在寻找的功能是JController的一部分,应该添加到您的控制器中。在您的情况下,这可能是基于您的网址中的视图名称的select.php控制器。
你可以在类别组件中看到一个很好的例子,特别是在administrator / components / com_categories / controllers / category.php。
以下是com_categories中的代码。您可能希望将扩展名重命名为“category_id”,并且可能希望从JInput而不是当前类中获取值:
/**
* Gets the URL arguments to append to an item redirect.
*
* @param integer $recordId The primary key id for the item.
* @param string $urlVar The name of the URL variable for the id.
*
* @return string The arguments to append to the redirect URL.
*
* @since 1.6
*/
protected function getRedirectToItemAppend($recordId = null, $urlVar = 'id')
{
$append = parent::getRedirectToItemAppend($recordId);
$append .= '&extension=' . $this->extension;
return $append;
}
/**
* Gets the URL arguments to append to a list redirect.
*
* @return string The arguments to append to the redirect URL.
*
* @since 1.6
*/
protected function getRedirectToListAppend()
{
$append = parent::getRedirectToListAppend();
$append .= '&extension=' . $this->extension;
return $append;
}
*编辑:
您还必须将其添加为表单的一部分。这是一个简单但重要的部分。只需确保表单具有隐藏的输入值或将其添加到表单的操作部分中的URL:
<form action="<?php echo JRoute::_('index.php?option=com_component&layout=edit&id='.(int) $this->item->id . '&category_id='.$this->category_id); ?>" method="post" name="adminForm">
或使用此:
<input type="hidden" name="category_id" value="<?php echo $this->category_id; ?>" />
为了进一步说明发生了什么,当您单击要转到表单的项目时,您可能会添加所需的变量。然后将其添加到表单中,以便在单击其中一个项目时,它将随表单一起提交。 Joomla处理此表单并根据单击的工具栏按钮保存或不保存。然后Joomla重定向,返回到表单或列表视图。如果没有控制器中的函数,变量就会丢失。