1

そのバグを説明するための長い話ではなく、すべてを説明するスクリーンショットを次に示します。

に対応する URL 内に「e」を入力するとすぐにrss_categoryルートと一致しなくなります。見る : !ここに画像の説明を入力

これを解決するため{slugCat}に、すべてを受け入れるように要件を強制しました.^(以前は要件ではありませんでした)。

それがいつか誰かを助けることができれば、そして誰かが有効な説明を持っているなら、私は聞いてうれしいです(Symfony 2.1.1で実行しています)。

4

1 に答える 1

3

うわー、難しいもの。これは、ルートをコンパイルするときに、symfonyが変数名の前の文字を区切り文字として使用しようとするために発生します。このコードはRouteCompiler.phpからのものです:

            // Use the character preceding the variable as a separator
            $separators = array($match[0][0][0]);

            if ($pos !== $len) {
                // Use the character following the variable as the separator when available
                $separators[] = $pattern[$pos];
            }
            $regexp = sprintf('[^%s]+', preg_quote(implode('', array_unique($separators)), self::REGEX_DELIMITER));

Symfonyがこれを行うのは、通常、変数名の前にある種のセパレーター、/ upload / rssArticle / {slugCat}のようなルートがあり、「/」がセパレーターであり、このセパレーターを使用できるようにすることで役立つようにするためです。複数の変数を含むルートで変数を分離します。あなたの場合、変数の前の文字は「e」であり、その文字は区切り文字になります。そのため、ルートが一致しません。ルートが/upload/ rssArticles {slugCat}である場合、「s」は区切り文字になり、それは使用できない文字になります。

たぶん、symfonyルーターコンポーネントで問題を引き起こす可能性があります。文字や数字の場合は、前の文字を区切り文字として使用しないでください。

于 2012-09-11T15:19:26.193 に答える