2012-01-31 33 views
10

Tôi mới dùng symfony2. Tôi bắt đầu với một số hướng dẫn và sau đó bắt đầu xây dựng SYMBLOG. Tôi đã hiểu nó và tôi có thể thêm hoặc thay đổi chức năng. Tôi có một chút nhầm lẫn trong quy trình làm việc, tôi có nghĩa là cách các tệp hoạt động cùng nhau để hiển thị một trang hoặc để tạo ra một kết quả đầu ra. Bất cứ ai có thể giải thích cho tôi một cách chi tiết từ đầu như thế nào dòng này đi vào trong symfony2. bắt đầu từ yêu cầu người dùng nói người dùng nhập url cho đến khi symfony2 hiển thị kết quả. vui lòng bao gồm routing.yml trong luồng. ?Quy trình làm việc với Symfony2?

Trả lời

21

Bạn nên kiểm tra liên kết này. Symfony - the big picture

Nó giải thích chi tiết tất cả các bước liên quan từ thời điểm bạn nhập URL trong trình duyệt vào trang được hiển thị.

Về cơ bản, tất cả các yêu cầu đều đi tới Bộ điều khiển mặt trước. Công việc của nó là định tuyến các yêu cầu tới mã điều khiển thích hợp. Nó thực hiện điều này với sự trợ giúp của các tuyến được xác định trong tệp app/config/routing.yml. Các bộ điều khiển được xác định trong src/<BundleName>/Controller/<name> thực hiện một số logic nghiệp vụ, như nhận dữ liệu từ Mô hình (Kho lưu trữ) và gửi thông tin đó tới Chế độ xem (Mẫu). Các khung nhìn đơn giản là mã HTML. Symfony sử dụng một công cụ tạo khuôn mẫu được gọi là Twig. Thay vì bao gồm các khối <?php ... ?> trong mã HTML, Symfony chuyển dữ liệu từ bộ điều khiển và có thể dễ dàng sử dụng bên trong khung nhìn trong các khối Twig {% %} hoặc {{ }}.

một cách đơn giản, đây là quy trình làm việc:

  1. trình duyệt sẽ gửi yêu cầu
  2. Yêu cầu nhận được trong front controller web/app_dev.php hoặc web/app.php
  3. điều khiển phía trước để kiểm tra các tuyến đường quy định tại app/config/routing.yml và gửi yêu cầu đến bộ điều khiển thích hợp được xác định trong src/<BundleName>/Controller/<controller_name>
  4. Bộ điều khiển chuẩn bị nội dung cần thiết trong HT ML (Ví dụ - truy vấn cơ sở dữ liệu từ src/<BundleName>/Repository) và gửi thông tin cho View - src/Resources/views/<twig file name>
  5. Quan điểm tạo HTML và gửi nó trở lại với bộ điều khiển
  6. Bộ điều khiển tạo ra một phản ứng HTTP và gửi nó lại cho trình duyệt

Có những thứ như ứng dụng/AppKernel ở giữa nhưng tôi đã bỏ qua.

Sau đây là các trích đoạn hữu ích từ các liên kết được cung cấp trên:

URL:

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

gì đang xảy ra ở đây? Hãy phân tích URL: app_dev.php: Đây là bộ điều khiển phía trước. Đây là điểm vào duy nhất của ứng dụng và nó phản hồi tất cả các yêu cầu của người dùng; /demo/hello/Fabien: Đây là đường dẫn ảo đến tài nguyên mà người dùng muốn truy cập. Trách nhiệm của bạn với tư cách là nhà phát triển là viết mã để ánh xạ yêu cầu của người dùng (/ demo/hello/Fabien) đến tài nguyên được liên kết với nó (trang Hello Fabien! HTML).

Routing:

Symfony2 tuyến theo yêu cầu để mã để xử lý nó bằng cách cố gắng để phù hợp với URL được yêu cầu đối với một số mẫu cấu hình. Theo mặc định, các mẫu này (được gọi là các tuyến) được định nghĩa trong tệp cấu hình app/config/routing.yml. Khi bạn đang ở trong môi trường dev - được chỉ định bởi app_ dev .php front controller - tệp cấu hình ứng dụng/config/routing_dev.yml cũng được tải. Trong phiên bản Standard Edition, các tuyến đường để những "demo" trang được đặt trong tập tin đó:

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

Bộ điều khiển:

Symfony2 chọn bộ điều khiển dựa trên giá trị _controller từ định tuyến cấu hình: AcmeDemoBundle: Chào mừng: chỉ mục. Chuỗi này là bộ điều khiển tên logic, và nó tham chiếu đến phương pháp indexAction từ lớp Acme \ DemoBundle \ khiển \ WelcomeController:

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

Xem:

Bộ điều khiển ám chỉ rằng src/Acme/DemoBundle/Tài nguyên/lượt xem/Demo/hello.html.twig mẫu

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

{% block title "Hello " ~ name %} 

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

Bạn cũng có thể muốn xem Symfony2 architecture

Các vấn đề liên quan