我正在浏览Joomla 2.5教程来构建自定义组件。现在,在使用JToolbar::save()
或JToolBarHelper::cancel
之后,我面临着重定向问题。默认情况下,Joomla想要重定向到默认布局(从编辑布局)。但是我不希望它这样做。我希望它重定向回另一个视图。在Joomla 1.5中,我会通过将函数添加到控制器中来完成此操作 - 类似于
function cancel()
{
//redirects user back to blog homepage with Cancellation Message
$msg = JText::_( 'COM_BLOG_POST_CANCELLED' );
$this->setRedirect( 'index.php?option=com_jjblog&view=jjblog', $msg );
}
现在,对于取消功能可以很好地工作,但是对于保存来说这是一个复杂得多的事情。如果我想覆盖url,我是否必须将控制器重定向到模型,然后写入模型交互的所有代码?因为对于像Joomla 1.5中的网址重定向来说,这似乎有点过分了?
答案 0 :(得分:3)
希望您已使用适当的控制器名称添加了保存工具栏代码,例如
JToolBarHelper::save('controllerName.save');
最后确保添加了具有相应组件名称的表单操作。
答案 1 :(得分:2)
你可以尝试这个 -
首先在控制器中调用父保存功能,而不是重定向到网址。
function save(){
parent::save();
$this->setredirect('index.php?option=com_mycomponent');
}
答案 2 :(得分:1)
好吧根本不需要$this->setRedirect
。只需要我将值更改为
protected $view_list = 'jjBlog';
然后将所有内容的重定向设置回该列表视图。
源链接为here。
感谢所有的回复!!
答案 3 :(得分:0)
我认为你可以使用
global $mainframe;
$mainframe->redirect("index.php?option=com_user&task=activate&activation=".$activation);
如果您在自定义组件中覆盖joomla的默认保存功能,例如
function save( $task = 'CustomSave', $alt = 'Save' ) // or even same name Save
在控制器内部,您可以使用CustomSave作为任务,并使用$ mainframe进行重定向。
or
$mainframe = &JFactory::getApplication();
$mainframe->redirect("index.php?option=com_user&task=activate&activation=".$activation);
希望这可以帮到你..
答案 4 :(得分:0)
view.html.php
protected function addToolbar ()
{
JRequest::setVar ('hidemainmenu', false);
JToolBarHelper::title (JText::_ ('Configuration'), 'configuration.gif');
JToolBarHelper::save($task = 'save', $alt = 'JTOOLBAR_SAVE');
}
Controller.php这样
public function save()
{
$mainframe = JFactory::getApplication();
$mainframe->enqueueMessage (JText::_ ('COM_SOCIALLOGIN_SETTING_SAVED'));
$this->setRedirect (JRoute::_ ('index.php', false));
}