Không có lệnh nào được xác định trong không gian tên của bộ điều khiển

Bắt đầu sử dụng Symfony sau 10 phút. Chương này sẽ hướng dẫn bạn một số khái niệm quan trọng nhất đằng sau Symfony và giải thích cách bạn có thể bắt đầu nhanh chóng bằng cách hiển thị cho bạn một dự án đơn giản đang hoạt động

Nếu bạn đã từng sử dụng một web framework trước đây, bạn sẽ cảm thấy quen thuộc với Symfony. Nếu không, chào mừng bạn đến với một cách phát triển ứng dụng web hoàn toàn mới

Cài đặt Symfony

Trước tiên, hãy kiểm tra xem phiên bản PHP được cài đặt trên máy tính của bạn có đáp ứng các yêu cầu của Symfony không. 5. 3. 3 hoặc cao hơn. Sau đó, mở bảng điều khiển và thực hiện lệnh sau để cài đặt phiên bản Symfony mới nhất trong thư mục

1
0

1
$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'

Ghi chú

Composer là trình quản lý gói được sử dụng bởi các ứng dụng PHP hiện đại và là cách duy nhất được đề xuất để cài đặt Symfony. Để cài đặt Trình soạn thảo trên hệ thống Linux hoặc Mac của bạn, hãy thực hiện các lệnh sau

1
2
$ curl -sS //getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer

Để cài đặt Trình soạn thảo trên hệ thống Windows, hãy tải xuống trình cài đặt thực thi

Xin lưu ý rằng lần đầu tiên bạn cài đặt Symfony, có thể mất vài phút để tải xuống tất cả các thành phần của nó. Khi kết thúc quá trình cài đặt, trình cài đặt sẽ yêu cầu bạn cung cấp một số tùy chọn cấu hình cho dự án Symfony. Đối với dự án đầu tiên này, bạn có thể bỏ qua cấu hình này một cách an toàn bằng cách nhấn phím

1
1 liên tục

Chạy Symfony

Trước khi chạy Symfony lần đầu tiên, hãy thực hiện lệnh sau để đảm bảo rằng hệ thống của bạn đáp ứng tất cả các yêu cầu kỹ thuật

1
2
$ cd myproject/
$ php app/check.php

Sửa bất kỳ lỗi nào được báo cáo bởi lệnh và sau đó sử dụng máy chủ web tích hợp PHP để chạy Symfony

1
$ php app/console server:run

Xem thêm

Đọc thêm về máy chủ nội bộ trong sách dạy nấu ăn

Nếu bạn gặp lỗi `Không có lệnh nào được xác định trong không gian tên "máy chủ". `, thì có lẽ bạn đang sử dụng PHP 5. 3. Vậy là được rồi. Nhưng máy chủ web tích hợp chỉ khả dụng cho PHP 5. 4. 0 hoặc cao hơn. Nếu bạn có phiên bản PHP cũ hơn hoặc nếu bạn thích máy chủ web truyền thống như Apache hoặc Nginx, hãy đọc bài viết Định cấu hình Máy chủ Web

Mở trình duyệt của bạn và truy cập URL

1
2 để xem trang Chào mừng của Symfony

Hiểu các nguyên tắc cơ bản

Một trong những mục tiêu chính của khung là giữ cho mã của bạn được tổ chức và cho phép ứng dụng của bạn dễ dàng phát triển theo thời gian bằng cách tránh trộn lẫn các lệnh gọi cơ sở dữ liệu, thẻ HTML và logic nghiệp vụ trong cùng một tập lệnh. Để đạt được mục tiêu này với Symfony, trước tiên bạn cần học một số khái niệm và thuật ngữ cơ bản

Symfony đi kèm với một số mã mẫu mà bạn có thể sử dụng để tìm hiểu thêm về các khái niệm chính của nó. Truy cập URL sau để được Symfony chào đón [thay thế Fabien bằng tên của bạn]

1
1
2

Ghi chú

Thay vì trang lời chào, bạn có thể thấy một trang trống hoặc một trang lỗi. Điều này là do cấu hình sai quyền thư mục. Có một số giải pháp khả thi tùy thuộc vào hệ điều hành của bạn. Tất cả chúng được giải thích trong phần Thiết lập quyền của cuốn sách chính thức

Những gì đang xảy ra ở đây?

  • 1
    3. Đây là bộ điều khiển phía trước. Nó là điểm vào duy nhất của ứng dụng và nó đáp ứng tất cả các yêu cầu của người dùng;
  • 1
    4. Đâ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 [

1
4] tới tài nguyên được liên kết với nó [trang HTML
1
6]

Lộ trình

Symfony định tuyến yêu cầu tới mã xử lý nó bằng cách khớp với URL được yêu cầu [i. e. đường dẫn ảo] đối với một số đường dẫn được định cấu hình. Các đường dẫn demo được xác định trong tệp cấu hình

1
7

$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
0
$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
1

Thao tác này sẽ nhập tệp

1
8 nằm bên trong AcmeDemoBundle

$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
2____23

Ba dòng đầu tiên [sau nhận xét] xác định mã được thực thi khi người dùng yêu cầu tài nguyên "

1
9" [i. e. trang chào mừng mà bạn đã thấy trước đó]. Khi được yêu cầu, bộ điều khiển
$ php app/console server:run
0 sẽ được thực thi. Trong phần tiếp theo, bạn sẽ tìm hiểu chính xác điều đó có nghĩa là gì

Mẹo

Ngoài các tệp YAML, các tuyến có thể được định cấu hình trong các tệp XML hoặc PHP và thậm chí có thể được nhúng trong các chú thích PHP. Tính linh hoạt này là một trong những tính năng chính của Symfony, một framework không bao giờ áp đặt một định dạng cấu hình cụ thể cho bạn

Bộ điều khiển

Bộ điều khiển là một hàm hoặc phương thức PHP xử lý các yêu cầu gửi đến và trả về các phản hồi [thường là mã HTML]. Thay vì sử dụng các biến và hàm toàn cục PHP [như

$ php app/console server:run
1 hoặc
$ php app/console server:run
2] để quản lý các thông báo HTTP này, Symfony sử dụng các đối tượng. Yêu cầu và phản hồi. Bộ điều khiển đơn giản nhất có thể có thể tạo phản hồi bằng tay, dựa trên yêu cầu

$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
4
$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
5

Symfony chọn bộ điều khiển dựa trên giá trị

$ php app/console server:run
3 từ cấu hình định tuyến.
$ php app/console server:run
0. Chuỗi này là tên logic của bộ điều khiển và nó tham chiếu phương thức
$ php app/console server:run
5 từ lớp
$ php app/console server:run
6

$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
6
$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
7

Mẹo

Bạn có thể đã sử dụng tên lớp và phương thức đầy đủ -

$ php app/console server:run
7 - cho giá trị
$ php app/console server:run
3. Nhưng sử dụng tên logic ngắn hơn và cho phép linh hoạt hơn

Lớp

$ php app/console server:run
9 mở rộng lớp
1
0 có sẵn, cung cấp các phương thức tắt hữu ích, như phương thức render[] tải và hiển thị một mẫu [
1
1]. Giá trị được trả về là một đối tượng
1
2 được điền với nội dung được hiển thị. Vì vậy, nếu có nhu cầu,
1
2 có thể được điều chỉnh trước khi nó được gửi đến trình duyệt

$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
8
$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
9

Bất kể bạn làm như thế nào, mục tiêu cuối cùng của bộ điều khiển của bạn luôn là trả lại đối tượng

1
2 sẽ được gửi lại cho người dùng. Đối tượng
1
2 này có thể được điền bằng mã HTML, đại diện cho chuyển hướng máy khách hoặc thậm chí trả về nội dung của hình ảnh JPG với tiêu đề
1
6 của
1
7

Tên mẫu,

1
1, là tên lô-gic của mẫu và nó tham chiếu đến tệp
1
9 bên trong AcmeDemoBundle [đặt tại
1
20]. Phần Gói bên dưới sẽ giải thích tại sao điều này lại hữu ích

Bây giờ, hãy xem lại cấu hình định tuyến và tìm khóa

1
21

$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
0
1
2
1

Tên logic của tệp chứa các tuyến đường

1
21 là
1
23 và đề cập đến tệp
1
24. Trong tệp này, các tuyến đường được định nghĩa là chú thích trên các phương thức hành động

1
2
2____33

Chú thích

1
25 tạo một tuyến đường mới khớp với đường dẫn
1
26 với phương thức
1
27. Bất kỳ chuỗi nào được đặt trong dấu ngoặc nhọn, chẳng hạn như
1
28, được coi là một biến có thể được truy xuất trực tiếp dưới dạng đối số phương thức có cùng tên

Nếu bạn xem kỹ mã của bộ điều khiển, bạn có thể thấy rằng thay vì hiển thị một mẫu và trả về một đối tượng

1
2 như trước đây, nó chỉ trả về một mảng các tham số. Chú thích
$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
00 yêu cầu Symfony hiển thị mẫu cho bạn, chuyển cho nó từng biến của mảng được trả về. Tên của mẫu được hiển thị theo sau tên của bộ điều khiển. Vì vậy, trong ví dụ này, mẫu
$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
01 được hiển thị [đặt tại
$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
02]

mẫu

Bộ điều khiển hiển thị mẫu

$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
02 [hoặc
$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
01 nếu bạn sử dụng tên logic]

1
2
4
1
2
5

Theo mặc định, Symfony sử dụng Twig làm công cụ mẫu nhưng bạn cũng có thể sử dụng các mẫu PHP truyền thống nếu muốn. Phần thứ hai của hướng dẫn này sẽ giới thiệu cách các mẫu hoạt động trong Symfony

Bạn có thể thắc mắc tại sao từ Gói lại được sử dụng trong nhiều tên bạn đã thấy cho đến nay. Tất cả mã bạn viết cho ứng dụng của mình được sắp xếp theo gói. Trong Symfony speak, một gói là một tập hợp các tệp có cấu trúc [tệp PHP, biểu định kiểu, JavaScript, hình ảnh,. ] triển khai một tính năng duy nhất [blog, diễn đàn,. ] và có thể dễ dàng chia sẻ với các nhà phát triển khác. Hiện tại, bạn đã thao tác một gói, AcmeDemoBundle. Bạn sẽ tìm hiểu thêm về các gói trong phần cuối của hướng dẫn này

Làm việc với môi trường

Bây giờ bạn đã hiểu rõ hơn về cách thức hoạt động của Symfony, hãy xem kỹ phần cuối của bất kỳ trang kết xuất Symfony nào. Bạn sẽ thấy một thanh nhỏ có logo Symfony. Đây là "Thanh công cụ gỡ lỗi web" và nó là người bạn tốt nhất của nhà phát triển Symfony

Nhưng những gì bạn nhìn thấy ban đầu chỉ là phần nổi của tảng băng chìm;

Tất nhiên, sẽ không khôn ngoan nếu bật công cụ này khi bạn triển khai ứng dụng của mình, do đó, theo mặc định, trình lược tả không được bật trong môi trường

$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
05

Môi trường là gì?

Môi trường đại diện cho một nhóm cấu hình được sử dụng để chạy ứng dụng của bạn. Symfony định nghĩa hai môi trường theo mặc định.

$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
06 [phù hợp khi phát triển ứng dụng cục bộ] và
$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
05 [được tối ưu hóa khi thực thi ứng dụng trên sản xuất]

Thông thường, các môi trường chia sẻ một số lượng lớn các tùy chọn cấu hình. Vì lý do đó, bạn đặt cấu hình chung của mình trong

$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
08 và ghi đè lên tệp cấu hình cụ thể cho từng môi trường nếu cần

$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
8
1
2
7

Trong ví dụ này, môi trường

$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
06 tải tệp cấu hình
$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
10, chính tệp này sẽ nhập tệp chung
$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
08 và sau đó sửa đổi tệp đó bằng cách bật thanh công cụ gỡ lỗi web

Khi bạn truy cập tệp

1
3 trong trình duyệt của mình, bạn đang thực thi ứng dụng Symfony của mình trong môi trường
$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
06. Để truy cập ứng dụng của bạn trong môi trường
$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
05, thay vào đó hãy truy cập tệp
$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
15

Các tuyến demo trong ứng dụng của chúng tôi chỉ khả dụng trong môi trường

$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
06. Do đó, nếu bạn cố truy cập vào URL
$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
17, bạn sẽ gặp lỗi 404

Mẹo

Nếu thay vì sử dụng máy chủ web tích hợp của PHP, bạn sử dụng Apache có bật

$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
18 và tận dụng tệp
$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
19 mà Symfony cung cấp trong
$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
20, bạn thậm chí có thể bỏ qua phần
$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
15 của URL.
$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
19 mặc định trỏ tất cả các yêu cầu tới bộ điều khiển phía trước
$ composer create-project symfony/framework-standard-edition myproject/ '~2.3'
15

1
1
2
9

Để biết thêm chi tiết về môi trường, hãy xem bài viết "Môi trường & Bộ điều khiển phía trước"

Suy nghĩ cuối cùng

Xin chúc mừng. Bạn đã có trải nghiệm đầu tiên về mã Symfony. Điều đó không quá khó phải không? . Nếu bạn muốn tìm hiểu thêm về Symfony, hãy đi sâu vào phần tiếp theo. "Cái nhìn"

Chủ Đề