web-dev-qa-db-ja.com

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

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

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

しかし、ドキュメント

JFactory :: getApplication

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

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

Edit:これらのメソッドはJApplicationCms(Joomlaライブラリ)では非推奨ではありませんが、JApplication(Joomla Plaftorm)では非推奨です。したがって、JFactory::getApplicationはJApplicationCmsオブジェクトを返します。その場合、redirectenqueueMessageなどのメソッドは非推奨ではなく、メッセージを使用してリダイレクトするための正しい方法です。

8
Adam M.

リダイレクト関数を介したメッセージの受け渡しは非推奨ですが、redirect()enqueueMessage()の両方をそのまま使用しても問題ありません。

次のように、両方を一緒に使用するだけです。

_$app = JFactory::getApplication();

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

enqueueMessageはメッセージをセッションに格納するため、redirect()関数の前にこれを呼び出すと、リダイレクト先のページにセッション値がまだ存在するため、メッセージが表示されます;)

9
Lodder

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

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

$controller = JControllerLegacy::getInstance("ComponentName");
$controller->setRedirect($url,$msg,$type);
$controller->redirect();
4
Kitase88