1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tiểu luận Lập trình ứng dụng web CakePHP Framework

47 1,6K 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 47
Dung lượng 1,03 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Các liên kết được định nghĩa bằng cách tạo ra một lớp biến được đặt tên sau liên kết mà bạn đang định nghĩa.. Trước tiên, các bảng cơ sỡ dữ liệu của bạn phải được đặt khóa chính xác.Đối

Trang 1

“ Add your company slogan ”

Trang 3

Giới thiệu CakePHP

 Hỗ trợ tạo kết nối đến cơ sở dữ liệu một

cách đơn giản và thuận lợi, chỉ với một

chuỗi kết nối đặt trong file

configs/database.php

Trang 4

Giới thiệu CakePHP

 Sinh code tự động dựa trên cơ sở dữ liệu đã

có, kiểm tra và nhận biết tự động các ràng buộc, quan hệ trong cơ sở dữ liệu.

 Tích hợp sẵn nhiều thư viện hỗ trợ cho việc lập trình và thiết kế giao diện trở nên đơn

giản như: Ajax, HTML Form, Javascript…

Trang 5

Cài đặt CakePHP

cakephp vào web server

2.Cài đặt

Trang 6

- Cũng như các PHP framework khác, CakePHP hoạt động theo mô hình MVC

- Việc phân tách ứng dụng rõ ràng như vậy sẽ

giúp bạn tách bạch các phần xử lý riêng biệt

cho website của bạn, nó giúp cho code của bạn trong sáng hơn, dễ lập trình, dễ quản lý, chỉnh sửa, nâng cấp

Trang 7

Model :Là lớp đầu tiên tương tác với cơ sở dữ

liệu trong các ứng dụng của bạn Trên Model ta

có thể thiết lập các ràng buộc dữ liệu, quan hệ giữa các bảng, bạn sẽ viết các truy vẫn cũng

như các xử lý logic ở đây

View :Đảm nhận việc hiển thị thông tin đã được

xử lý gởi đến từ Controller

sử dụng để tạo các file HTML hiển thị cho

người sử dụng

Trang 8

Xử lý và điều hướng các yêu cầu của client.

Nơi trực tiếp xử lý các request từ url và form

để thao tác trực tiếp với Model, sau đó dùng

View để hiển thị ra

Trang 9

Model-View-Controller

Trang 10

//action logic goes here } public function share($customerId, $recipeId) { //action logic goes here }

} ?>

Trang 11

Controller Methods

1 Tương tác với Views

Controller tương tác với View theo một số

cách:

Trang 12

- render(string $action, string $layout, string $file)

render() được gọi tự động ở cuối mỗi lần yêu cầu controller Phương thức này được thực

hiện ở tất cả các view (sử dụng dữ liệu được

đưa ra trong set()), thay chỗ các view vào trong các layout và thể hiện ra giao diện người dùng

Trang 13

Controller Attributes

$name: dùng để đặt tên cho controller, thông thường tên chỉ là số nhiều của tên Model được sử dụng

<?php

// $name controller attribute usage example

class RecipesController extends AppController {

public $name = 'Recipes';

}

?>

Trang 15

<?php

// Using $layout to define an alternate layout

class RecipesController extends AppController {

function quickSave() {

$this->layout = 'ajax';

} }

?>

Trang 16

hiện tại trong yêu cầu (request).

Ví dụ: nếu URL /posts/view/1 được yêu cầu thì

$this>params['controller'] là "posts"

Trang 17

hiện tại chứa trong yêu cầu

Ví dụ: nếu yêu cầu URL /posts/view/1 được

yêu cầu thì $this>params['action'] chứa"view"

chỉ số bằng số) các tham số sau action

form được lưu trữ Thông tin kèm theo cũng được chứa trong $_FILES

Trang 18

Tập tin của View được lưu trong /app/views,

được đặt tên theo các hành động tương ứng

với nó

app/views/products/view.ctp

Trang 19

View Method:

set(string $var, mixed $value):

tượng controller

controller đến view của bạn Một khi bạn sử

view

<?php $this->set('activeMenuButton', 'posts'); ?>

Sau đó trong layout biến $activeMenuButton sẽ có hiệu lực và có giá trị

Trang 20

addScript(string $name, string $content)

Phương thức này hữu ích khi tạo các Helpers cần phải thêm javascript hoặc css trực tiếp cho layout Phương pháp này thường được sử

dụng từ các Helpers bên trong, giống như

Javascript và Html Helpers

Trang 21

$request: Một thực thể của CakeRequest Sử dụng thực thể này để truy cập thông tin về các yêu cầu hiện tại.

Trang 23

CakePHP tự động làm cho Model cho phép

truy cập khi nó có tên phù hợp với Controller

Trang 24

Ví dụ :

Một Controler được đặt tên là

IngredientsController sẽ tự độngkhởi tạo model

Ingredient và gắn nó vào controller bằng

$this->Ingredient

<?php

class IngredientsController extends AppController {

public function index() {

//grab all ingredients and pass it to the view:

$ingredients = $this->Ingredient->find('all');

$this->set('ingredients', $ingredients); } }

?>

Trang 25

Model Method:

field(string $name, array $conditions = null,

string $order = null)

Trả về giá trị của một trường duy nhất được chỉ định bằng biến $name từ bản ghi đầu tiên thỏa mản $conditions với thứ tự sắp xếp bởi biến

Trang 26

read(): là phương thức được dùng để thiết lập

mô hình dữ liệu hiện hành, nhưng nó còn được dùng trong trường hợp lấy một bản ghi ra từ cơ

sở dữ liệu

function beforeDelete($cascade)

{

$rating = $this->read('rating'); // gets the rating of the recordbeing deleted.

$name = $this->read('name', $id2); // gets the name of a second record.

$rating = $this->read('rating'); // gets the rating of the second record.

$this->id = $id3; //$this->read(); // reads a third record

$record = $this->data // stores the third record in $record

}

Trang 27

[fieldname1] => 'value'

[fieldname2] => 'value' )

Trang 28

Ví dụ:

<?php

public function edit($id) {

// Has any form data been POSTed?

if ($this->request->is('post')) { // If the form data can be validated and saved

if ($this->Recipe->save($this->request->data)) { // Set a session flash message and redirect

$this->Session->setFlash('Recipe Saved!');

$this->redirect('/recipes');

} // If no form data, find the recipe to be edited and hand it to the view

$this->set('recipe', $this->Recipe->findById($id));

} ?>

Trang 29

Xóa dữ liệu:

delete (int $id = null, boolean $cascade = true);

Xóa bản ghi được chỉ định bởi biến $id Mặc định thì xóa cả những bản ghi có liên quan tới bản ghi được chỉ định.

Ví dụ khi xóa một User thì các thông tin liên quan tới User đó cũng được xóa.

deleteAll (mixed $conditions, $cascade = true,

$callbacks = false)

Giống như delete , nhưng deleteAll() xóa tất cả các bản ghi được chỉ định bởi một điều kiện ràng buộc.

Trang 30

Quan hệ trong Models

Trong CakePHP, các liên kết giữa các models được

xử lý thông qua các mối liên hệ.

Xác định các mối quan hệ trong công việc cho phép bạn truy cập dữ liệu của bạn một cách trực quan và mạnh mẽ.

Các loại quan hệ:

one to one hasOne A user has one profile.

one to many hasMany A user can have multiple recipes many to one belongsTo Many recipes belong to a user.

many to many hasAndBelongsToMany Recipes have, and belong to many

ingredients.

Trang 31

Các liên kết được định nghĩa bằng cách tạo ra một lớp biến được đặt tên sau liên kết mà bạn đang định nghĩa Lớp biến đó đôi khi có thể là một chuỗi, nhưng có thể là một mảng đa chiều

để xác định cụ thể mối liên kết

<?php

class User extends AppModel {

public $hasOne = 'Profile';

public $hasMany = array(

'Recipe' => array(

'className' => 'Recipe', 'conditions' => array('Recipe.approved' => '1'), 'order' => 'Recipe.created DESC' )

Trang 32

Trước tiên, các bảng cơ sỡ dữ liệu của bạn

phải được đặt khóa chính xác.Đối với một mối quan hệ hasOne, một table chỉ chứa khóa

ngoại đến một table khác

Apple hasOne Banana bananas.apple_id

User hasOne Profile profiles.user_id

Doctor hasOne Mentor mentors.doctor_id

Trang 33

belongsTo: Kết hợp belongsTo là sự bổ sung

tự nhiên cho kết hợp hasOne và hasMany: Nó cho phép chúng ta xem dữ liệu từ một phương diện khác

Khi đặt khóa cho bảng dữ liệu đối với mối liên kết belongsTo phải theo quy ước sau:

Banana belongsTo Apple bananas.apple_id

Profile belongsTo User profiles.user_id

Trang 34

Một kết hợp hasMany sẽ cho phép chúng ta lấy comment của user khi chúng ta lấy một bảng

ghi của user đó

Khi đặt khóa cho bảng dữ liệu đối vơi một liên kết hasMany phải theo quy ước sau:

User hasMany Comment Comment.user_id

Cake hasMany Virtue Virtue.cake_id

Product hasMany Option Option.product_id

Trang 35

hasAndBelongsToMany (HABTM)

Kết hợp này được dùng khi bạn có hai model

cần kết nối với nhau liên tục nhiều lần và nhiều cách khác nhau

Sự khác biệt chính giữa hasMany và HABTM là một liên kết giữa các model trong HABTM

không phải độc quyền Trong khi đó liên kết

giữa các model trong hasMany thì độc quyền Nếu User hasMany với Comments thì một

comment chỉ có thể liên kết tới một user xác

Trang 36

Khi đặt khóa cho bảng dữ liệu đối vơi một liên kết hasMany phải theo quy ước sau:

Recipe HABTM

Ingredient

ingredients_recipes.id, ingredients_recipes.ingredient_id, ingredients_recipes.recipe_id

Cake HABTM Fan cakes_fans.id, cakes_fans.cake_id, cakes_fans.fan_id

Foo HABTM Bar bars_foos.id, bars_foos.foo_id, bars_foos.bar_id

Trang 37

Một số quy ước cơ bản

Cách đặt tên file, tên lớp

Tên file sử dụng chữ thường, dùng dấu

- Tên lớp viết hoa chữ cái đầu tiên của từ

Ví dụ : ta có tên lớp là MyClass-> file

Trang 38

Một số quy ước cơ bản

Sau đây là các ví dụ về cách đặt tên file cho mỗi dạng lớp khác nhau:

Class tương ứng Tên file

Controller NewsCategoriesController Newscategories_controller.php Component SmtpMailComponent Smtp_mail.php

View MySimpleView my_simple.php

Helper MyImageHelper my_image.php

Trang 39

Một số quy ước cơ bản

Các qui ước về Model và CSDL

-Tên các lớp model được đặt ở dạng số ít và

việc viết hoa thường tuân theo CamelCased

Ví dụ: Person, BigPerson và ReallyBigPerson

- CakePHP không hỗ trợ khóa chính gồm nhiều cột

Nếu bạn muốn thao tác trực tiếp kết nối (join) các bảng, hãy truy vấn trực tiếp hoặc thêm một khóa chính thay cho khóa nhiều cột

Trang 40

Một số quy ước cơ bản

VD: CREATE TABLE order_detail (

id int NOT NULL AUTO_INCREMENT,

product_id int NOT NULL, order_id int NOT NULL, quantity int NOT NULL, amount float NOT NULL,

PRIMARY KEY ( id ) );

- Tên bảng tương ứng với các model của

CakePHP ở dạng số nhiều và sử dụng gạch dưới (_)

Trang 41

Một số quy ước cơ bản

Qui ước về Controller :

- Tên lớp của controller đặt theo dạng số nhiều.

- Tuân theo CamelCased và cuối tên phải có

Trang 42

Một số quy ước cơ bản

- Các khóa ngoại trong các quan hệ

hasMany, belongsTo, hasOne có tên

mặc định là số ít của tên bảng kèm theo

nhiều News, bảng news sẽ có khóa ngoại

news_category_id

Trang 43

Một số quy ước cơ bản

- Khóa chính mặc định trong CakePHP là cột id, kiểu int, tự tăng Tuy nhiên, bạn cũng có thể

định nghĩa lại khóa chính cho bảng thông qua biến $primaryKey trong model

tạo ra UUIDs để làm khóa khi ta thêm mới một

ứng với 36 ký tự.

Trang 44

Một số quy ước cơ bản

- Khi một phương thức trong Controller được đặt

không thể truy xuất nó từ bên ngoài mà chỉ có thể truy xuất trong controller đó (cái này gọi là private)

- VD: <?php

Class ProductsControllers extends AppController{

function index(){

//Mã lệnh ở đây } function _get_product(){

//Mã lệnh ở đây } function viewProduct(){

$this ->_get_product(); } } ?>

Trang 45

“ Add your company slogan ”

Demo

Trang 46

“ Add your company slogan ”

Thank You !

Trang 47

Thank You !

Ngày đăng: 05/04/2015, 21:54

TỪ KHÓA LIÊN QUAN

w