問題タブ [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 受け入れテストが機能しない
現在、Symfony2 アプリケーションの受け入れテスト ケースを作成しています。以下を行っています。
ただし、以下のログファイルを調べると失敗する場合があります。
どうやら
$_SERVER
変数にいくつかの値が欠落しているようです。手がかり、またはテストケースを作成するためのより良い方法はありますか。
DataHelper.php
php - ファイルが存在する場合は Apache にリクエストを処理させ、そうでない場合は Symfony フロント コントローラー経由でルーティングします。
Symfony に更新しようとしている非常に古い php アプリケーションがあります。
アプリケーションは現在、次のような構造になっています。
ページには、関数などでいっぱいのヘルパー ファイルがあり、アセットでいっぱいのフォルダーもいくつかありますが、それはあまり重要ではありません。したがって、特定のページにアクセスするには、ブラウザで domain.com/php_page1.php または domain.com/dashboard/dashboard_page1.php を指定します... フロント コントローラーはありません。すべてのページに直接アクセスします。
全体として、一度にリファクタリングするには多すぎるので、一度に 1 ページずつ分割して行いたいと考えています。
私がやりたいことは、symfony を現在持っているものの上にインストールすることです。これにより、symfony 構造は現在ここにあるものと共存します。
Symfony を正常にインストールし、サンプルのレガシー ページを移行しました (Web ルートが移動したことに注意してください)。これはうまくいきます。
問題は、最終的に、レガシー ページが存在する場合はそれらを提供し、存在しない場合はフロント コントローラー (app.php) を通過するために Apache が必要なことです。
これが私が試したことです。
さまざまな .htaccess ルールを試して、Apache が /www および /www/dashboard のファイルを提供できるようにしました。これらは失敗し、Symfony は一致するルートがないことを教えてくれます。
Symfony も試しまし$this->redirect('..\www\php_page1.php');
た。これは失敗し、Symfony は「構成されたディレクトリの外でテンプレートを読み込もうとしたようです」と言ってきます。
最後に、ルートとして /dashboard を追加しようとしました:
小枝のパスを追加しました:
これには 3 つの例外があります。
FileLoaderLoadException in FileLoader.php
118行目:
InvalidArgumentException in YamlFileLoader.php
371行目:
ParseException in Inline.php
108行目:
質問
だから私の質問は:現在存在するURLが呼び出された場合(つまり、domain.com/php_page1.php)、SymfonyまたはApacheを介して直接そのページを提供するようにSymfony / Apacheを構成するにはどうすればよいですか? Symfony のフロントコントローラーにリクエストを処理させますか?
編集
私が現在持っている .htaccess は次のとおりです。
これは Symfony で機能し、ルートが定義されているものはすべてルーティングします。問題は、それが /www/web (新しい Web ルート) にあることです。これは、Symfony が Web ルートを配置したい場所です。Web ルートの外にある /www または /www/dashboard にはアクセスしません。
.htaccess を使用して、Apache に Web ルートから 1 レベル下のファイルを取得させるか、Symfony にそれらのページを一般的な php スクリプトとして提供させようとしています。
content-management-system - シンプルな CMS 機能を既存の Symfony アプリケーションに追加するにはどうすればよいですか?
MySQL データベースにアクセスする既存の Web アプリケーションがあります。このアプリケーションを Symfony に移植しています。アプリケーション全体を一度に移植することはできないため、新しいアプリケーションは古いデータベースを使用する必要があります。つまり、古いアプリケーションと新しいアプリケーションが同じデータベースにアクセスし、アプリケーションが同時に実行されます。
古いアプリケーションには、移植する必要がある単純な CMS 機能がありました。
page
ページツリーを表すテーブルがあります。すべてのページにはslug
フィールドがあります。URL パスは、ページ ノードを識別するパスを表すスラッグで構成されます"/[parent-slug]/[child-slug]"
。
ページ テーブルには、content
フィールドも含まれています。既に述べたように、CMS の機能は非常に単純であるため、コンテンツはページ レイアウト内のページ コンテンツとしてレンダリングされるだけです。ページ エントリは、ページ レイアウト/テンプレートも指定します。
私の問題は、ルーティングの設定方法がわからないことです。通常の Symfony アプリケーションでは、以前から URL パターンを知っていましたが、この場合は動的です。また、ルートはユーザーがいつでも変更できるため、キャッシュできません。Symfony のルーティングを完全に落として、自分で何かを実装する必要があるのだろうか。しかし、どのように?
ここで、フレームワーク VS CMS ルーティングの競合について多くのことを伝える Symfony CMF を見つけました。だから最初は、これが正しい方法だと思いました。ただし、チュートリアルは、PHPRC に基づいてまったく新しいアプリケーションを構築することを目的としています。チュートリアルの概念を自分のユース ケースに当てはめることができませんでした。
symfony - URLで指定しないsymfonyのデフォルトロケール
locale
次のルートに正常にアクセスできるように、Symfony オプションを設定したいと思います。
現在、アクセス/{locale}/route
してビューを取得できます/route
が、No route found for "GET /route"
. 私の構成は次のとおりです。
私のコントローラーには次の注釈があります。
を具体的に含めるとlocale
、すべて機能します。を除外するとlocale
、No route found
エラーが発生します。