0

我正在阅读 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 中那样的 url 重定向来说似乎有点过分?

4

5 回答 5

3

希望您已经使用正确的控制器名称添加了保存工具栏代码,如下所示

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

于 2013-01-31T05:32:49.420 回答
2

你可以试试这个-

在控制器中,首先调用父保存函数而不是重定向到 url。

function save(){
 parent::save();        
 $this->setredirect('index.php?option=com_mycomponent');
}
于 2013-01-31T06:38:44.040 回答
1

好的,它根本不需要$this->setRedirect。只需要我将值更改为

protected $view_list = 'jjBlog';

然后将所有内容的重定向设置回该列表视图。

源链接在这里

感谢所有的回复!

于 2013-01-31T19:26:15.687 回答
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);

希望这可以帮助你..

于 2013-01-31T03:09:16.107 回答
0

视图.html.php

protected function addToolbar ()
    {
        JRequest::setVar ('hidemainmenu', false);
        JToolBarHelper::title (JText::_ ('Configuration'), 'configuration.gif');
        JToolBarHelper::save($task = 'save', $alt = 'JTOOLBAR_SAVE');

    }

控制器.php

public function save()
    {  
    $mainframe = JFactory::getApplication();
    $mainframe->enqueueMessage (JText::_ ('COM_SOCIALLOGIN_SETTING_SAVED'));    
        $this->setRedirect (JRoute::_ ('index.php', false));
    }
于 2013-01-31T04:06:14.050 回答