0

を使用して、アクションで現在のURLを設定してい$request->getPathInfo()ます。ただし、取得されるURLは常にprod環境のURLです。つまり、テスト中に誤ってdevからprod環境に移動します。

とにかく正しいURI(つまりブラウザウィンドウに表示されているものと同じ)が返されることを保証する方法はありますか?

私のアクションコードは次のようになります。

public function executeSomeAction(sfWebRequest $request)
{
    $this->url = $request->getPathInfo();
}
4

2 に答える 2

2

中を見ることができるように、URLからsfWebRequest.class.phpgetPathInfo()削除しました:$relativeUrlRoot

$pathInfo = $pathArray[$sf_path_info_key];
if ($relativeUrlRoot = $this->getRelativeUrlRoot())
{
  $pathInfo = preg_replace('/^'.str_replace('/', '\\/', $relativeUrlRoot).'\//', '', $pathInfo);
}

$relativeUrlRootURLからコントローラー名を削除するこの関数からです。

public function getRelativeUrlRoot()
{
  if (null === $this->relativeUrlRoot)
  {
    if (!($this->relativeUrlRoot = $this->getOption('relative_url_root')))
    {
      $this->relativeUrlRoot = preg_replace('#/[^/]+\.php5?$#', '', $this->getScriptName());
    }
  }

  return $this->relativeUrlRoot;
}

したがって、myapp_dev.php/mainまたはを持っている場合index.php/mainは、常に。を取得し/mainます。

の前にフルパスが必要な場合/mainは、も呼び出す必要があります$this->request->getScriptName()

注意してください、ドメインとパス情報の間のすべてgetScriptName()を返します。がある場合は、次を返します。http://exemple.com/somepath/app_dev.php/maingetScriptName()/somepath/app_dev.php

于 2013-02-12T13:58:13.313 に答える
1

完全なURIと任意のクエリ文字列が必要な場合は、アドレスに使用できる可能性があります

$request->getUri();

これにより、ブラウザのアドレスバーに表示されているアドレス全体が返されます。

于 2013-02-13T08:42:38.640 に答える