1

ZF2プロジェクトのルートパラメータの設定に問題があります。URLをパラメーターとしてページに渡せるようにしたいのですが、そうしようとすると404になります。

URLモジュールを作成しましたが、次のコントローラーがURLをidparamとして渡すように設定したいと思います。コントローラはAbstractRestfulControllerクラスを拡張するため、以下の例ではget($ id)メソッドを使用します。

コントローラアドレス:

http://localhost/url/

パラメータ付き:

http://localhost/url/http://www.google.co.uk

module.config.phpのルーターセクションは次のようになります。

'router' => array(
    'routes' => array(
        'url' => array(
            'type' => 'segment',
            'options' => array(
                'route' => '/url[/][:id]',
                'defaults' => array(
                    'controller' => 'URL\Controller\URL',
                ),
            ),
        ),
    ),
),

エンコードパラメータを渡さなければならない場合、それは世界の終わりではありませんが、私はしたくないのですが。

エンコードされたパラメータを使用して:

http://localhost/url/http:%2F%2Fwww.google.co.uk
4

1 に答える 1

2

これはあなたの質問を直接参照するものではありませんが、ルートを少し調整することをお勧めします!現在、あなたのルートはあまりにも一致しすぎています、これでも:

http://localhost/url1

そして、私はあなたがこれで働きたいとは思わない、ここに私の提案があります:

'type'    => 'segment',
'options' => array(
    'route'    => '/url[/[:id]]',
    'defaults' => array(
        'controller' => 'URL\Controller\URL',
    ),
    'constraints' => array(
        'id' => '<InsertURLRegexHere>'
    )
)

あなたの質問にもう少し関連しています:ViewHelpersは、で見られるように、重要な文字を自動的にurlencodeし、Zend\Mvc\Router\Http\Segmentencode()で使用されますbuildPath()

あなたの行動は正確にどこで起こりますか、そしてあなたはそれが閲覧目的のためにURLをデコードするのはブラウザだけではないと確信していますか?Chromeはこのようなことをするのが大好きです^^

于 2013-02-08T07:48:29.980 に答える