Joomla 3でシステムメッセージを使用してユーザーをリダイレクトする方法


9

私はあなたがこれを行うことでこれを達成できることを知っています:

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

しかし、ドキュメント

JFactory :: getApplication

それは非推奨であり、それenqueueMessageも非推奨であり、たとえばホームページにリダイレクトされないように使用することをお勧めします。

非推奨ではないメソッドを使用して、システムメッセージを含むホームページにユーザーをリダイレクトするにはどうすればよいですか。ドキュメントには、Joomlaのバージョン4で非推奨になる(?)と書かれているので、現在の方法は唯一のものですか、それともこれを達成するための新しい標準の方法はすでにあるのですか?

編集: これらのメソッドはJApplicationCms(Joomlaライブラリ)では非推奨ではありませんが、JApplication(Joomla Plaftorm)では非推奨です。したがって、JFactory::getApplicationJApplicationCmsオブジェクトを返すので、redirectおよびenqueueMessageなどのメソッドは廃止されておらず、それらを使用することは、メッセージでリダイレクトする正しい方法です。

回答:


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()は非推奨のJApplicationの代わりにJApplicationCmsオブジェクトを返します
Kitase88

確かに、これらのメソッドはJApplicationCms(Joomlaライブラリ)では非推奨ではありませんが、JApplication(Joomla Plaftorm)では非推奨です。ドキュメンテーションリンクは、JApplicationCms(リンクが機能しない)を返し、これらのメソッドが廃止されたJApplicationを表示するように言っています。だからそれはドキュメンテーションの混乱であり、私はこの問題を知らせますので、修正することができます。
Adam M.

4

最善の方法は、すべてのリダイレクトをサブコントローラーで直接処理することです。サブコントローラーを使用するだけで$this->setRedirect($url,$msg,$type);、MVCが残りの作業を実行します。

コントローラの外部にリダイレクトする必要がある場合は、JControllerLegacyクラスを使用できます。

$controller = JControllerLegacy::getInstance("ComponentName");
$controller->setRedirect($url,$msg,$type);
$controller->redirect();
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.