如何在Joomla 3中使用系统消息重定向用户


9

我知道您可以通过执行以下操作来实现此目的:

JFactory::getApplication->redirect(url, message, type)

但是文档位于

JFactory :: getApplication

表示已弃用,建议使用enqueueMessage也已弃用,并且不会将您重定向到例如首页。

如何使用未弃用的方法将用户重定向到带有系统消息的主页。文档说它们将(?)在Joomla的第4版中弃用,那么当前方法是唯一的方法还是已经有一种新的标准方法来实现这一目标?

编辑: 这些方法在JApplicationCms(Joomla库)上不被弃用,但是在JApplication(Joomla Plaftorm)上不被使用。因此,由于JFactory::getApplication返回JApplicationCms对象,因此不赞成和类似的方法redirectenqueueMessage并且使用它们是通过消息重定向的正确方法。

Answers:


10

通过重定向功能传递的消息已被弃用,但两者redirect()enqueueMessage()仍然罚款都对自己使用。

您只需要同时使用它们,就像这样:

$app = JFactory::getApplication();

$app->enqueueMessage('Redirect to another page was successful', 'success');
$app->redirect(JRoute::_('index.php'));

enqueueMessage将消息存储在会话中,因此当您在redirect()函数之前调用此消息时,会话值仍然存在于您重定向到的页面上,因此消息将显示;)


1
实际上,这是一个更好的解决方案,因为Joomla!3.2 JFactory::getApplication()返回一个JApplicationCms对象而不是已弃用的JApplication
Kitase88 '16

的确,这些方法并未在JApplicationCms(Joomla库)上弃用,但在JApplication(Joomla Plaftorm)上已弃用。文档链接说它返回JApplicationCms(链接不起作用),并说要在不推荐使用这些方法的地方查看JApplication。所以这是文档上的混乱,我会指出这个问题,因此可以解决。
亚当M.16年

4

最好的办法是直接在您只需要使用的子控制器中处理所有重定向$this->setRedirect($url,$msg,$type);,MVC将完成其余的工作。

如果您需要重定向到控制器之外,可以使用JControllerLegacy类:

$controller = JControllerLegacy::getInstance("ComponentName");
$controller->setRedirect($url,$msg,$type);
$controller->redirect();
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.