1

それで、私はそれについてオンラインで何かを見つけようとしてきましたが、ドキュメントのどこにもURLの末尾のスラッシュに関するものはありません。これが私の問題です。

すべてのURLをスラッシュで終わらせ、そうでない場合はリダイレクトする可能性があります。これで、コードはスラッシュの有無にかかわらず機能しますが、2つの異なる結果が得られます。var_dump( $this->dispatcher->getParams() );

これがルートの私のコードです

<?php
    // for brevities sake, it's only the route

    $router->add('/:controller/:action/:id/', array(
        'controller'    => 1,
        'action'        => 2,
        'id'            => 3
    ));

さて、私が持っているその末尾のスラッシュは実際には何もしないので、そのままにしておきました。URL / user / view / 13 /の場合、次のvar_dumpがあり$this->dispatcher->getParams()ます。

array(2) {
  [0]=>
  string(2) "13"
  [1]=>
  string(0) ""
}

URL / user / view / 13(末尾のスラッシュなし)を実行すると、次のvar_dumpが表示され $this->dispatcher->getParams()ます。

array(2) {
  [0]=>
  string(2) "13"
} 

基本的に、同じ結果が得られるように、ファルコンを末尾のスラッシュで終了させる方法はありますか?または、カスタムルーティングクラスを作成する必要がある可能性がありますか?どんな助けでもいただければ幸いです!

4

1 に答える 1

3

バージョン<=0.7.0の場合、各ルートの正規表現にオプションの/を追加できます。

$router->add('/:controller/:action/:id[/]{0,1}', array(
    'controller'    => 1,
    'action'        => 2,
    'id'            => 3
));

注::idは、Mvc \ Routerの有効なプレースホルダーではありません。代わりに、:intを使用できます。

0.8.0から、末尾のスラッシュの自動修正を有効にできます。

$router->removeExtraSlashes(true);
于 2012-12-28T15:43:10.923 に答える