私はあなたがこれを行うことでこれを達成できることを知っています:
JFactory::getApplication->redirect(url, message, type)
しかし、ドキュメント
は非推奨であり、enqueueMessage
を使用することをお勧めします。これも非推奨であり、たとえばホームページにリダイレクトされません。
非推奨ではないメソッドを使用して、システムメッセージを含むホームページにユーザーをリダイレクトするにはどうすればよいですか。ドキュメントには、Joomlaのバージョン4で非推奨になる(?)と書かれているので、現在の方法は唯一の方法ですか、それともこれを達成するための新しい標準の方法はすでにあるのですか?
Edit:これらのメソッドはJApplicationCms(Joomlaライブラリ)では非推奨ではありませんが、JApplication(Joomla Plaftorm)では非推奨です。したがって、JFactory::getApplication
はJApplicationCmsオブジェクトを返します。その場合、redirect
やenqueueMessage
などのメソッドは非推奨ではなく、メッセージを使用してリダイレクトするための正しい方法です。
リダイレクト関数を介したメッセージの受け渡しは非推奨ですが、redirect()
とenqueueMessage()
の両方をそのまま使用しても問題ありません。
次のように、両方を一緒に使用するだけです。
_$app = JFactory::getApplication();
$app->enqueueMessage('Redirect to another page was successful', 'success');
$app->redirect(JRoute::_('index.php'));
_
enqueueMessage
はメッセージをセッションに格納するため、redirect()
関数の前にこれを呼び出すと、リダイレクト先のページにセッション値がまだ存在するため、メッセージが表示されます;)
最善の方法は、$this->setRedirect($url,$msg,$type);
を使用するだけでサブコントローラーですべてのリダイレクトを直接処理することであり、MVCが残りのジョブを実行します。
コントローラの外部にリダイレクトする必要がある場合は、JControllerLegacyクラスを使用できます。
$controller = JControllerLegacy::getInstance("ComponentName");
$controller->setRedirect($url,$msg,$type);
$controller->redirect();