2012-01-31 10 views
10

symfony2の新機能です。私はいくつかのチュートリアルでそれを始めてから、SYMBLOGのビルドを始めました。私はそれを理解しており、私は機能を追加または変更することができます。私はワークフローで少し混乱しています。つまり、ファイルをどのように連携させてページをレンダリングするか、出力を生成することを意味します。誰もが最初からこの流れがsymfony2でどのように進んでいるかを詳しく説明できますか? symfony2が結果を表示するまでユーザーがurlを入力すると、ユーザーの要求から始めます。フローにrouting.ymlを含めてください。 ?Symfony2によるワークフロー?

答えて

21

あなたはこのリンクをチェックアウトする必要があります。 Symfony - the big picture

ブラウザでURLを入力してからレンダリングされるページまでのすべてのステップが詳しく説明されています。

基本的にすべてのリクエストはフロントコントローラに送られます。その役割は、要求を適切なコントローラコードにルーティングすることです。それはapp/config/routing.ymlファイルで定義されたルートの助けを借りてこれを行います。 src/<BundleName>/Controller/<name>で定義されたコントローラは、モデル(リポジトリ)からデータを取得し、その情報をビュー(テンプレート)に送信するなど、いくつかのビジネスロジックを実行します。ビューは単なるHTMLコードです。 Symfonyは、Twigと呼ばれるテンプレートエンジンを使用します。 symfonyは<?php ... ?>ブロックをHTMLコードに含めるのではなく、コントローラからのデータを渡し、Twig {% %}または{{ }}ブロック内のビュー内で簡単に使用できます。

は、簡単に言えば、ここでのワークフローです:

  1. ブラウザが送信するリクエスト
  2. リクエストはフロントコントローラweb/app_dev.phpまたはウェブ/ app.php
  3. フロントコントローラで受け取っチェックapp/config/routing.ymlで定義されたルートとsrc/<BundleName>/Controller/<controller_name>で定義された適切な コントローラに要求を送信します。
  4. コントローラは、HTで必要なコンテンツを準備しますMLは(例 - src/<BundleName>/Repositoryからデータベースを照会)し、ビューに情報を送信 - src/Resources/views/<twig file name>
  5. ビューは、HTMLを作成し、バックコントローラ
  6. コントローラにそれを送信するHTTPレスポンスを作成し、ブラウザに送り返し

の間に来るが、私はそれをスキップしているアプリ/ AppKernelのようなものがあります。

ここの上方に設けられたリンクから有用な抜粋は以下のとおりです。

URL:ここに

http://localhost/Symfony/web/app_dev.php/demo/hello/Fabien 

が起こっているのですか? URLを解読しましょう: app_dev.php:これはフロントコントローラです。これはアプリケーションの一意のエントリポイントであり、すべてのユーザーの要求に応答します。 /demo/hello/Fabien:これは、ユーザーがアクセスしたいリソースへの仮想パスです。 開発者としての責任は、ユーザーの要求(/ demo/hello/Fabien)を関連付けられたリソース(Hello Fabien!HTMLページ)にマッピングするコードを記述することです。

ルーティング:

Symfony2のルートをいくつか設定されたパターンに対して要求されたURLに一致するように試みることによって、それを処理するコードに要求。デフォルトでは、これらのパターン(ルートと呼ばれます)はapp/config/routing.yml設定ファイルで定義されています。 dev環境(app_ デベロッパー .phpフロントコントローラー)で表示されている場合、app/config/routing_dev.yml構成ファイルもロードされます。 Standard Editionでは、これらの「デモ」ページがそのファイルに配置されているへのルート:

_welcome: 
pattern:/
defaults: { _controller: AcmeDemoBundle:Welcome:index } 

コントローラー:

Symfony2のルーティングから_controller値に基づいて、コントローラを選択します設定:AcmeDemoBundle:ようこそ:インデックス。この文字列は、コントローラの論理名であり、それはアクメ\ DemoBundle \コントローラ\ WelcomeControllerクラスからindexActionメソッドを参照しています

class WelcomeController extends Controller 
{ 
    public function indexAction() 
    { 
     return $this->render('AcmeDemoBundle:Welcome:index.html.twig'); 
    } 
} 

ビュー:

コントローラは/ SRCをレンダリングアクメ/ DemoBundle /リソース/ビュー/デモ/ hello.html.twigテンプレート

{% extends "AcmeDemoBundle::layout.html.twig" %} 

{% block title "Hello " ~ name %} 

{% block content %} 
    <h1>Hello {{ name }}!</h1> 
{% endblock %} 

また、symfony2をチェックアウトすることもできます。architecture

関連する問題