11/08/2018, 22:33

Tìm hiểu về Yii framework (tiếp theo)

Tìm hiểu về Yii Framework (tiếp) Các thành phần thường được sử dụng trong model Có rất nhiều thành phần đã được định nghĩa sẵn trong yii framework giúp cho lập trình viên phát triền ứng dụng 1 cách dễ dàng và nhanh chóng hơn . Ví dụ Như thao tác với thành phần **Component **thường là ...

Tìm hiểu về Yii Framework (tiếp)

Các thành phần thường được sử dụng trong model

images

Có rất nhiều thành phần đã được định nghĩa sẵn trong yii framework giúp cho lập trình viên phát triền ứng dụng 1 cách dễ dàng và nhanh chóng hơn .

Ví dụ

  • Như thao tác với thành phần **Component **thường là : CwebUser, CuserIdentity hay

CurlManager .. . Hay với thành phần Model có các thành phần thường gặp là :CactiveRecord, CdbCriteria, CformModel, Cvalidation , nhờ có những thành phần trên mà việc thao tác và làm việc với yii trở nên rất linh hoạt , tối ưu và tích kiệm được nhiều thời gian công sức .

Trong bài viết này tập trung vào 1 số thành phần thường được sử dụng trong Model

I. CformModel

CFormModel đại diện cho một mô hình dữ liệu hình thức thu thập dữ liệu đầu vào HTML, không giống như CActiveRecord các dữ liệu thu được chỉ lưu vào bộ nhớ tạm thời, để xác thực dữ liệu, tìm kiếm,… chứ không cần phải lưu vào database .

Để có thể thu thập dữ liệu của user nhập vào , bạn nên extend CformModel và định nghĩa các thuộc tính thuộc giá trị của dữ liệu nhập vào . Bạn có thể ghi đè (override) hàm rules() để định nghĩa lại tính đúng đắn của giá trị nhập vào .

Trên đây là một ví dụ tạo 1 form đăng nhập đơn giản bằng CformModel

Screenshot from 2014-09-26 17:16:39

username, password và rememberMe. Chúng được sử dụng để giữ cho tên người dùng người dùng nhập vào và mật khẩu, và các tùy chọn xem người dùng muốn ghi nhớ thông tin đăng nhập của mình.

Như đã nói ở trên . Chúng ta có thể định nghĩa lại tính đúng đắn của dữ liệu nhập vào qua hàm rules() :

Screenshot from 2014-09-26 17:51:47

ở đây username và password là bắt buộc (required) . Và đây coi như kết thúc phần định nghĩa cho SigninForm .

Tiếp theo sẽ là xây dựng controller và view cho form này . Ở đây đối tượng SigninForm được sử dụng bởi đối tượng user . Nên ta sẽ khai báo ở trong UserController .

Screenshot from 2014-09-26 17:55:53

Tương tự khai báo trong view của user

Screenshot from 2014-09-26 17:59:36

Khi user đăng lập vào SigninForm dữ liệu sẽ được kiểm tra qua hàm rules() nếu phù hợp sẽ được so sánh vào trong csdl .

Screenshot from 2014-09-26 16:23:21

Ngoài ra yii framework cũng cũng cấp rất nhiều hàm và thư viện cho CformModel bạn có thể tham khảo tại : http://www.yiiframework.com/doc/api/1.1/CFormModel

II . CdbCriteria

Thành phần CdbCriteria đại diện cho một tiêu chí truy vấn , chằng hạn như tìm kiếm theo điều kiên hoặc sắp xếp(order by) hoặc tìm kiếm giới hạn(limit,offset) …

Nó còn có thể được sử dụng trong phương pháp truy vấn AR của thành phần CactiveRecord:find and CactiveRecord:findAll

Các thuộc tính phổ biến thường được sử dụng với CdbCriteria được mô tả đầy đủ trong bảng sau

Screenshot from 2014-09-26 18:11:17

Thông tin đầy đủ có thể tham khảo tại : http://www.yiiframework.com/doc/api/1.1/CDbCriteria

Sau đây chúng ta sẽ tiến hành xây dựng đơn giản 1 form tìm kiếm sử dụng CdbCriteria .

Ở ví dụ này chúng ta có 1 table chứ dữ liệu của 1 loạt các đoàn viên .

Screenshot from 2014-09-26 18:13:16

ở bảng này có rất nhiều thuộc tính . Có thể tìm theo tất cả các thuộc tính hoặc chỉ 1 thuộc tính tùy thuộc vào điều kiện tìm kiếm . CdbCriteria khác với CformModel là chúng ta ko phải xây dựng riêng 1 lớp để định nghĩa cho việc form tìm kiếm .

CdbCriteria đã được xây dựng sẵn chúng ta chỉ việc add các thuộc tính tìm kiếm vào đối tượng CdbCriteria rồi những việc còn lại sẽ được tự động làm .

Screenshot from 2014-09-26 18:16:01

Việc định nghĩa trong controller ta khai báo 1 đối tượng CdbCriteria :

Screenshot from 2014-09-26 18:18:24

Cuối cùng trong truy vấn get kết quả ta thêm điều kiện đối tượng CdbCriteria vào

Screenshot from 2014-09-26 18:19:31

Kết quả như hinh sau :

Screenshot from 2014-09-26 18:20:33

0