問題タブ [symfony-routing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - Symfony2:「GET /lucky/number」のルートが見つかりません
私は(初心者として)チュートリアルを開始し、すべてがうまくいくまで:
http://symfony.com/doc/current/book/page_creation.html#creating-a-page-route-and-controllerページの作成: ルートとコントローラー
というファイルを作成しました。/var/www/html/[projekt]/src/AppBundle/Controller/LuckyController.php
しかし、http://[Server-IP]:8000/app_dev.php/lucky/numberを開くと、常に 404 が返されます。
ルーティング.yml
コントローラ
どこが間違っているのかわかりません...
エラー - キャッチされていない PHP 例外 Symfony\Component\HttpKernel\Exception\NotFoundHttpException: /var/www/html/[Symfony-Folder]/app/cache/dev/classes で "GET /lucky/number" のルートが見つかりません。 php行2061
symfony - 認証に基づいて 1 つの URL を 2 つのコントローラー アクションにルーティングする
私はSymfonyに少し慣れていませんが、簡単に説明できる状況があります:
公開ホームページと非公開ホームページがあります。URL「/」でこれらの両方にアクセスできるようにしたいと思います
認証されていない人がアドレス www.example.com/ にアクセスした場合、それらを PublicController::indexAction() にルーティングしたいと思います
認証されたユーザーがアドレス www.example.com/ にアクセスすると、Privatecontroller::indexAction() にルーティングされるようにしたいと思います。
これは可能ですか?
(symfony 2.7 ところで)
php - 既存のルートから新しいルートにリダイレクト
ユーザーがログインしておらず (FOSUser および SonataAdmin で動作)、http://domain.com/app_dev.php
(dev) またはhttp://domain.com
(prod) のいずれかを呼び出す場合にリダイレクトしようとしています。両方の場合にリダイレクトしたい/login
ので、次の場所にこの構成を書きましたapp/routing.yml
:
それは機能しますが、コントローラーにこれがあるため、問題があります。
次に、例のように(dev) または(prod)brand
のようなリンクを使用してルートを呼び出そうとすると、にリダイレクトされました。私の最善のアイデアは、コードを次のように変更することです。http://domain.com/app_dev.php/?email=7x-xRFClkjw
http://domain.com/?email=7x-xRFClkjw
/login
そして、その機能の代わりに新しいルートを使用してリダイレクトします(これは主に、ユーザーが以前に共有されたリンクを含む大量の電子メールをすでに持っているためであり、それを変更することはできません)。しかし、私がこれを書いた場合、私はこのルールをどのように書き込めばよいかわかりません:/bp
/
routing.yml
リダイレクトループになってしまいます。/login
また、適切なドキュメントが見つからないため、デフォルト ルートの設定方法を変更することもできます。この投稿の背後にある大きなアイデアは、 のデフォルト ルートを設定することです/
。これについて何か助けてもらえますか?
追加情報として、これは私のsecurity.yml
ファイルの一部です:
アップデート
実際、@emmanuel-hdz-díaz のコードは別のアイデアを与えてくれます。コントローラーでこれを行うだけで、カーネル リスナーを作成したり、多くのコードを追加したりする必要はありません。
ユーザーを/login
ルートにリダイレクトできました。
php - コントローラーでルートをアノテーションとして定義する Symfony2
専門家の提案が必要です。パフォーマンスと標準の点で理想的なものは何ですか?
1) Symfony 基本チュートリアルで提案されているように、src//Resources/config/routing.yml ですべてのルートを定義しますか?
また
2)コントローラーでルートを注釈として定義しますか?
どちらも正しく、正常に動作しているようです。私の質問は、どちらがパフォーマンスに優れており、symfony の標準により近いものであるかを正当化することです。
php - Symfony CMF 動的ルーターの「一致できませんでした」ログ
私は、Symfony CMF ルーティング バンドル 1.3 を使用する Symfony 2.6 アプリケーションを持っています。ここでは、通常の symfony ルートとカスタム ストア用の動的ルートを組み合わせて使用します (とりわけ、以下の例では動的ルーターの 1 つに焦点を当てています)。
問題は、ルーターが正常に機能しているにもかかわらず、ルーターが動的ルートに一致しないという無限のログを取得していることです。
最も一般的なエントリは次のとおりです。
たまに見かけます
これらのログを無効にするか、動的ルーターの構成/セットアップを変更して、ルートが実際に失敗した場合にのみこれらのエラーが表示されるようにする方法はありますか?
ここに私の設定/セットアップがあります:
そして、実際の動的ルーターはに基づいています
動的ルートを使用するより良い方法がある場合は、それを聞きたいです:)
php - symfony、動的ルーティング
独自のルートを持つ複数のスキン/テンプレートを含む symfony プロジェクトがあります。正しいセットアップのアイデアはありますか?
- スキンとアセットだけでなく、一部のスキンに存在する可能性のあるサービスも含まれているため、すべてのスキン/テンプレートは独自のバンドルです。
- ホスト名がスキンを決定します。
- カスタム RouteLoader を使用して、ターゲット バンドルの route.yml をロードします。
カスタム RouteLoader は仕事をしますが、生成されたルートはキャッシュされています。私の知る限り、ルートのキャッシュを防ぐ方法はありません。
いくつかの提案は次のとおりです。
- /{dynamic} ルートを作成するため、手動でルートを形成します..しかし、ルーターのその機能を捨てたり、プロジェクト全体をリファクタリングしたりしたくありません..
- ルートの前にテンプレート識別子を付けます。これには、すべての route.yml ファイルをロードする必要がありますが、パスが共有されているため、これは不可能です。
誰?複数のプロジェクトを行うことはできません。スキンの量は 20 ~ 30 ~ 程度です。
このセットアップの理由は、Content-as-a-Service .. サービスのターゲットであり、複数のクライアントがプロジェクトをプラットフォームとして使用し、それらの設定によって使用されるテンプレートが決定されるためです。
symfony - カスタム Symfony CMF 動的ルーターの実装
デフォルトのコントローラ ルーティングと組み合わせてダイナミック ルーティングを使用したいと考えています。受信リクエストのURLをチェックする列「url」を持つテーブル「ページ」があります。この表に URL が見つからない場合は、デフォルトのコントローラ ルートを確認する必要があります。
ChainRouter は次の順序で設定する必要があります。
- リクエスト URL を「ページ」テーブルの「url」列と一致させてみてください。そのテーブルのデータを使用して、応答を返すためにどのテンプレートを使用すればよいかがわかります。
- デフォルトのコントローラ ルートを確認する
ページテーブルを検索するカスタム動的ルーター実装を作成する必要があると思います。これは次の構成になります。
次に、カスタム動的ルーティングの実装を使用します。しかし、どうすればそれを行うことができますか?
symfony - Symfony2 のルーティング構造 "/" と "/news/page/{page}"
2 つのルート「/」と「/news/page/{page}」を組み合わせて、スタート ページを表示するためだけに同じデフォルトの 2 つのルートを必要としないようにする方法はありますか? knpmenubundle を使用していますが、1 つの要素に 2 つのルートがある場合、メニュー項目をアクティブとしてマークする際に問題が発生します。
symfony - コントローラを実行する前のカスタム認可チェック
roles
メニューのレンダリング中にメニュー項目の権限をチェックするための新しいオプションをルーティング設定に追加しました。
対応するコントローラーを実行する前に、権限チェックのオプションを使用できれば素晴らしいと思います。
例:
コントローラー自体を実行する前に、ユーザーが役割に基づいてコントローラーにアクセスできるかどうかを確認する必要があります。
それはどのように可能ですか?何か案は?
更新
なぜroles
オプションが必要なのですか?
プロジェクトには4つの異なる役割と多くのルートがあります。一部のルートは保護されており、特定の役割を持つユーザーにのみ表示されます。
今のところ、すべての承認チェックはコントローラー内でdenyAccessUnlessGranted()
メソッドによって実行されます。また、メニューの構築にはKnpMenuBundle
を
使用しています。また、メニューのレンダリング中に、現在ログインしているユーザーの各項目のアクセシビリティを確認する必要があります。ユーザーがアイテムへのアクセス権を持っていない場合、そのアイテムは除外され、ユーザーには表示されません。
ユーザーがアイテムにアクセスできるかどうかを確認するために、前述のオプションを追加しました。ここでは、ルートにアクセスできるロールを定義します。そして、このオプションは、チェックインとまったく同じロールを定義しますroles
denyAccessUnlessGranted()
. そして、私はすでにこれらの役割設定を持っているので、コントローラーの承認チェックに使用して冗長コードを削除しないのはなぜだと思います。