JToolbar :: save()重定向

时间:2013-01-31 00:16:26

标签: joomla joomla2.5 joomla-extensions

我正在浏览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中的网址重定向来说,这似乎有点过分了?

5 个答案:

答案 0 :(得分:3)

希望您已使用适当的控制器名称添加了保存工具栏代码,例如

  1. JToolBarHelper::save('controllerName.save');
  2. 在适当的控制器中创建保存功能。
  3. 以表格
  4. 添加任务
  5. 最后确保添加了具有相应组件名称的表单操作。

答案 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));
    }