1

php-silexにプロジェクトがありますが、このフレームワークを使用しています。ルートを作成しましたが、機能しないルートもあります。ここにいくつかの例があります:

/*
**INIT HERE & SOME OTHER CODE
*/
 $app->match('letter-{letter}', function($letter) use()
 {
    echo 'With dash';
 });

 $app->match('letter_{letter}', function($letter) use()
 {
    echo 'With underscore';
 });

 $app->match('{other}', function($other) use()
 {
    echo 'Other view';
 });

/ letter-aと入力すると、出力は「幅ダッシュ」になりますが、「/ letter_a」と入力すると、出力は「その他のビュー」であり、「幅の下線」ではありません。

これが発生した理由と、「幅のアンダースコア」を表示する方法を知りたいですか?

4

2 に答える 2

3

問題は、routes:letter-{letter}letter_{letter}が同じルート名に解決されるため、2番目のルートが最初のルートを上書きすることです。解決策は、ルートに一意の名前を明示的に付けることです。

あなたはそれを使用することによってそれを行うことができますbind

$app->match('letter-{letter}', function ($letter) {
    echo 'With dash';
})
->bind('letter_dash');

$app->match('letter_{letter}', function ($letter) {
    echo 'With underscore';
})
->bind('letter_underscore');

同じ名前のルートが2つ存在する場合にエラーが発生するかどうかを確認するために、silexトラッカーでチケットを開きます。(編集:完了

于 2011-11-26T17:39:28.280 に答える
0

私は彼らがそのタイプの構文を許可しているとは思わない、彼らはあなたのスラッシュ'/'の間でwhildカードルックアップを行い、値全体を取得している、明らかに彼らは本当のパターンマッチングを許可していない。

于 2011-11-26T08:20:40.153 に答える