2

シンプルなJoomlaコントローラーを持っていますが、何もリダイレクトできません。

ドキュメントによると:

class MyController extends MyBaseController {

 function import() {
    $link = JRoute::_('index.php?option=com_foo&ctrl=bar');
    $this->setRedirect($link);
  }

}
//The url contains & html escaped character instead of "&"

これは機能するはずですが、不正な形式のURLを取得します。ここに欠けているものはありますか?Joomlaがすべての「&」文字を「」に変換するのはなぜ&ですか?setRedirectをどのように使用すると思いますか?

ありがとうございました

4

5 に答える 5

11

わかりました、修正しました。したがって、誰かがそれを必要とする場合:

それ以外の

$link = JRoute::_('index.php?option=com_foo&ctrl=bar');
$this->setRedirect($link);

使用する

$link = JRoute::_('index.php?option=com_foo&ctrl=bar',false);
$this->setRedirect($link);

それを機能させるために。

于 2012-10-30T17:13:55.247 に答える
1

これを試して。

$mainframe = &JFactory::getApplication();
$mainframe->redirect(JURI::root()."index.php?option=com_foo&ctrl=bar","your custom message[optional]","message type[optional- warning,error,information etc]");
于 2012-10-31T04:21:00.703 に答える
1

答えが見つかってよかったです。ちなみに、のブール値パラメーター JRoute::_()はデフォルトで true であり、xml 準拠に役立ちます。静的メソッド内で、次のように htmlspecialchars php 関数を使用して、 $url = htmlspecialchars($url)xml の & を置き換えます。

于 2012-10-31T01:20:35.717 に答える
-3

/libraries/joomla/application/application.php

行 400 を検索

    // If the headers have been sent, then we cannot send an additional location header
    // so we will output a javascript redirect statement.
    if (headers_sent())
    {
        echo "<script>document.location.href='" . htmlspecialchars($url) . "';</script>\n";
    }

に置き換えます

    // If the headers have been sent, then we cannot send an additional location header
    // so we will output a javascript redirect statement.
    if (headers_sent())
    {
        echo "<script>document.location.href='" . $url . "';</script>\n";
    }

これはうまくいきます!

于 2016-06-19T14:11:27.047 に答える