Thứ hai, 12/08/2013 | 00:00 GMT+7

Bắt đầu với Yii PHP Framework - Phần 2


Về Yii

Yii là một khung công tác Hướng đối tượng PHP có hiệu suất cao giúp bạn xây dựng các ứng dụng web một cách nhanh chóng. Cách nó được thiết kế cho phép bạn tập trung vào những gì làm cho ứng dụng của bạn trở nên độc đáo trong khi nó xử lý các nhiệm vụ xác định mã “nhàm chán” hơn. Nó tuân theo mô hình MVC để tách biệt logic khỏi bản trình bày và nó có khá nhiều chức năng thực thi bảo mật.

Trong hướng dẫn này, ta tiếp tục những gì ta đã bắt đầu lần trước khi ta cài đặt khung Yii trên VPS và tạo ứng dụng đầu tiên của bạn . Nếu bạn còn nhớ, ta cũng đã thực hiện một chút cấu hình để dọn dẹp URL và liên kết database MySQL sẽ được ứng dụng của ta sử dụng.

Bây giờ ta sẽ tiếp tục và sử dụng một số công cụ tạo mã do Yii cung cấp để cài đặt mô hình đầu tiên cho dữ liệu của ta . Sau đó, ta sẽ tạo mã cho các hoạt động CRUD. Cuối cùng, ta sẽ xem xét cách thức hoạt động của một quy trình ứng dụng Yii điển hình. Nhưng trước tiên, hãy tạo một bảng trong database mà ta đã kết nối lần trước để chứa một số nội dung - giả sử các mẩu tin tức.

Nếu bạn nhớ, database ta đã tạo được gọi là db_tutorial . Hãy vào dòng lệnh và tạo một bảng trong database này. Để nâng cao kỹ năng SQL của bạn để thực hiện việc này, bạn có thể xem bài viết này về cách tạo và sử dụng bảng trong MySQL và MariaDB . Vì vậy, ta cần một bảng có tên là tin tức chứa 3 cột: id (chính và tự động tăng dần), tiêu đề và nội dung.

Bạn có thể tiếp tục và sử dụng lệnh này để tạo bảng nếu bạn đang vội:

CREATE TABLE news (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, 
title VARCHAR(256),
body TEXT);

Không cần phải điền, ta sẽ sử dụng Yii để làm điều này một cách độc đáo.

Ngươi mâu

CRUD là một trong những tác vụ phổ biến nhất mà ứng dụng web phải thực hiện. Tạo, đọc, cập nhật và xóa dữ liệu từ database là rất quan trọng và thông thường bạn phải viết cho mình tất cả các hàm thực hiện các việc này. Đây là nơi Yii trở nên vui vẻ. Sử dụng Gii , một trình tạo mã dựa trên web, ta có thể tự động tạo mã CRUD cơ bản. Vì vậy, hãy xem nó hoạt động như thế nào.

Để sử dụng Gii, trước tiên ta cần kích hoạt nó. Trong cùng một file main.php nằm trong folder protected / config nơi ta đã áp dụng các thay đổi trong hướng dẫn trước, bạn sẽ tìm thấy một khối mã bạn cần bỏ ghi chú để bật Gii:

/*
  'gii'=>array(
    'class'=>'system.gii.GiiModule',
    'password'=>'Enter Your Password Here',
    // If removed, Gii defaults to localhost only. Edit carefully to taste.
    'ipFilters'=>array('127.0.0.1','::1'),
  ),
*/

Xóa các comment và chỉ định password mà bạn sẽ sử dụng để truy cập Gii trong trình duyệt. Bây giờ, tùy thuộc vào nơi bạn đã cài đặt ứng dụng của bạn , bạn cũng cần thay đổi thông số ipFilters . Theo mặc định, Gii sẽ chỉ có thể truy cập được từ localhost. Vì vậy, nếu server của bạn ở xa, mặc định sẽ không hoạt động. Vì vậy, trong khi bạn đang phát triển, bạn có thể đặt nó thành false và sau đó đặt nó trở lại như cũ sau khi bạn hoàn thành:

'ipFilters'=>false,

Ngoài ra, bạn có thể đặt một địa chỉ IP cụ thể mà bạn biết rằng bạn muốn cho phép kết nối. Lưu file và truy cập trình duyệt của bạn. Nếu bạn đã làm theo các bước từ bài viết trước về URL sạch hơn, bạn nên đi tới:

http://example.com/mysite/gii

Nếu không, hãy truy cập:

http://example.com/mysite/index.php?r=gii

Thao tác này sẽ nhắc bạn nhập password bạn vừa chỉ định và trên đó, bạn nên vào xem các tùy chọn tạo mã. Trước khi tạo mã CRUD, ta cần một lớp Model cho bảng ta đã tạo ( tin tức ). Vì vậy, hãy nhấp vào Trình tạo mô hình và làm theo hướng dẫn. Về cơ bản, tất cả những gì bạn phải làm là điền vào trường tên bảng và nhấn Xem trước . Sau đó, bạn có thể xem trước mã và nhấp vào Tạo .

Nếu bạn gặp lỗi như " Không thể ghi file ", hãy đảm bảo web server có quyền ghi trong folder được bảo vệ / mô hình . Để thực hiện việc này, trước tiên hãy gán quyền sở hữu group của folder cho group dữ liệu www bằng cách chạy lệnh sau từ terminal của bạn ( đảm bảo bạn đang ở trong folder root của ứng dụng):

chown root:www-data protected/models

Điều này sẽ làm cho chủ sở hữu của folder trở thành user gốc và group dữ liệu www . Lưu ý Apache hoạt động trên trang web với quyền là user www-data , một phần của group www-data . Tiếp theo, hãy đảm bảo group dữ liệu www cũng có thể ghi trong folder đó:

chmod 775 protected/models

CRUD (tạo, đọc, cập nhật, xóa)

Vì vậy, bây giờ ta có một lớp Model để giao tiếp với bảng News . Hãy nhanh chóng tạo mã CRUD để thực hiện các hoạt động cho dữ liệu bên trong nó. Quay lại cùng một URL mà bạn đã ở trước đó ( mysite / gii ) nhưng lần này chọn trình tạo Crud . Trong trường Model class chỉ định tên Model mà ta vừa tạo ( Tin tức ), sau đó nhấp vào Xem trướcTạo sau đó. Nhưng hãy đảm bảo server có thể ghi các folder được bảo vệ / bộ điều khiểnđược bảo vệ / chế độ xem (xem ở trên cách thực hiện việc này nếu bạn chưa biết).

Sau khi tạo mã CRUD, bạn sẽ nhận được thông báo thành công với liên kết để dùng thử. Nó sẽ đưa bạn đến một trang hiển thị các bản ghi trong bảng tin tức . Vì nó trống, bạn sẽ không tìm thấy bất kỳ. Tuy nhiên, ở phía bên phải, bạn sẽ thấy một menu với một số liên kết để tạo và quản lý tin tức. Hãy tiếp tục và chơi xung quanh việc tạo, đọc, cập nhật và xóa tin tức. Trong phần Quản lý tin tức, bạn thậm chí sẽ có chức năng tìm kiếm, sắp xếp và lọc để quản lý nội dung - tất cả đều "không cần thiết". Ngoài ra, bạn thậm chí có thể tạo các lớp điều khiển, biểu mẫu và mô hình bằng cách sử dụng Gii, nhưng ta sẽ không đi sâu vào điều đó trong hướng dẫn này.

Quy trình làm việc ứng dụng

Bây giờ ta đã thấy việc tạo mã CRUD cho dữ liệu trong ứng dụng của bạn dễ dàng như thế nào, hãy hiểu một chút về cách hoạt động của định tuyến Yii của các yêu cầu. Yii triển khai mô hình thiết kế model-view-controller (MVC) để tách biệt logic khỏi bản trình bày. Ngoài ra, nó sử dụng một bộ điều khiển phía trước được gọi là Ứng dụng thu thập thông tin về yêu cầu của user và chuyển tiếp nó đến một bộ điều khiển thích hợp để xử lý. Vì vậy, làm thế nào nó hoạt động? Không đi sâu vào tất cả các chi tiết, những điều sau đây sẽ cung cấp cho bạn một sự hiểu biết khá rõ ràng:

Xem xét cấu trúc URL mặc định mà không làm sạch nó (như ta đã làm trong hướng dẫn trước), giả sử user đưa ra yêu cầu tới http://example.com/mysite/ index.php?r=tin/view&id=1 . Với URL rõ ràng, đây sẽ là http://example.com/mysite/ news / 1 .

Tập lệnh bootstrapping index.php khởi tạo Ứng dụng được hỗ trợ bởi thành phần urlManager xác định bộ điều khiển được yêu cầu và hành động của nó - trong trường hợp này là tin tức (được tìm thấy trong lớp NewsController) và chế độ xem , tương ứng. Ứng dụng tạo một thể hiện của Controller được yêu cầu, sau đó thực thi hành động (trong trường hợp này là actionView ). Đổi lại, hành động đọc Mô hình Tin tức với ID là 1 từ database và hiển thị nó trong một Chế độ xem có tên hiển thị (được nhúng trong một bố cục) cho user trong trình duyệt.

Đây là nó, một mẫu MCV không quá phổ biến để định tuyến yêu cầu của user . Để có sơ đồ phác thảo quy trình làm việc điển hình của ứng dụng Yii và mô tả từng bước chính xác của tất cả các quy trình, bạn có thể xem trang này .

Kết luận

Trong hướng dẫn này, ta đã thấy điều gì khiến Yii trở thành một khuôn khổ PHP tuyệt vời như vậy. Nó cho phép bạn rất dễ dàng tạo các mô hình, bộ điều khiển và thậm chí là chức năng hoạt động CRUD thông thường, do đó bạn không phải lo lắng về việc viết tất cả mã này. Bạn chỉ cần tập trung vào việc làm cho ứng dụng của bạn làm được những gì bạn muốn.

Bài viết gửi bởi: Danny

Tags:

Các tin liên quan

Cách lưu trữ các phiên PHP trong Memcached trên CentOS VPS
2013-08-05
Cách sử dụng Gmail hoặc Yahoo với chức năng PHP mail ()
2013-08-02
Cách tạo plugin Nagios với PHP trên Ubuntu 12.10
2013-04-29
Cách tạo plugin Nagios với PHP trên CentOS 6
2013-04-29