まず、この難題を取り上げていただきありがとうございます。Symfonyの絶対パス/ルートをチェックする方法は?
目標:
私のURL構造が似ているFacebookの/さえずり:site.com/Username
、ユーザがユーザ名を設定できるようにするには、私はルートのパスが一致するかどうかを確認する必要がありますユーザー名。
可能性&問題:getRouteCollection()
問題を使用して
1):このメソッドはすべきではない
誰かが興味を持っている場合は、私が思いついた可能な解決策(https://github.com/symfony/symfony-docs/issues/6710を参照)
2.)ブラックリストをユーザーのRegExpとして使用すると、ルートキャッシュを再構築してパフォーマンスが低下するために使用されますエンティティ
* @Assert\Regex(pattern="/^(?!register)(?!login)...
問題は...「約」、「設定」、「ログイン」、「登録」のように、すべてのサイトをブラックリストに(ユーザ名用):時にはURLがあるので、これはほぼに保証されてを爆発site.com/username結果ならば404
問題でチェックするCURLを使用して)この正規表現に
3を追加するのを忘れ:これは私と専門外のため、「ハック」のようです。
質問:チェックの
いただきましたプロ、安全な方法ユーザ名を設定することができ、「自由」であることが保証されるように、ルートがすでに存在していない場合(絶対パスを経由してsite.com/Usernameのように他のルートはありません) $ APP-> hasURLのような例何か( '/ユーザ名')
私はあなたが問題を考える上ではないと思っています。ルートは定義されている順番に一致しています。つまり、/ register、/ loginなどの前に/ {username}を定義していれば、すべてうまくいくでしょう。 – Cerad