3

次のルートを持つ単純なブログ バンドルがあります。

blog_post:
    pattern:  /blog/{year}/{month}/{filename}/
    defaults: { _controller: ProjectBlogBundle:Post:index }
    requirements:
        year: "[0-9]{4}"
        month: "[0-9]{2}"
        filename: "([^/.]+)"

の URL とsymfony.local/blog/2012/04/hello-world/問題なく一致します。ただし、何らかの理由で、以下のように Request クラスを使用してクエリ パラメーターにアクセスできません。

use Symfony\Component\HttpFoundation\Request;

class PostController extends Controller
{
    /**
     * @Template()
     */
    public function indexAction(Request $request)
    {


    print_r($request->query->keys()); // outputs blank array
    print_r($request->request->keys()); // outputs blank array

    echo $request->get('filename'); // outputs hello-world

    ....

   }

を使用してクエリパラメーターにアクセスできない理由を誰か説明できます$request->query->get('filename');か?

前もって感謝します。

4

1 に答える 1

7

$request->queryクエリ文字列として渡されるパラメーターのみが含まれるため(GETパラメーターのみ)、ルート パラメーターとして定義されたパラメーター (から解析される属性) は含まれませんPATH_INFO

両方使えるので、

$request->attributes->get('parameterName');
$request->get('parameterName');

URL パラメータにアクセスします。

実際、 を使用する場合$request->get('XXXX')、すべてのパラメータ バッグ ($request->query、$request->request および $request->attributes) を、指定された名前に適合するものが見つかるまでチェックします。

于 2013-01-08T03:04:37.663 に答える