ģ��-��ͼ-��������MVC�������ǽ�����������Ȧ��������ἰ��ģʽ֮һ��Ŀǰ������Ӧ�ÿ���մ�ߵ�����
���Ϳ��������ĸ��д�Ĵ���϶����°ٴΡ� ���죬���ǽ���ϸ����һ��
MVC�ĺ��壬�Լ�����������е�ԭ��
���ϵ���ʷ��
MVC����һ�����ģʽ��design pattern��������һ���ܹ�ģʽ��Architectural
pattern������������Ӧ�ó���Ľṹ�Լ��ṹ�и����ֵ�ְ��ͽ�����ʽ��
����������1979���ʱ���һ�α������������ʱ������Щ��ͬ������Ӧ�õĸ����ڵ�ʱ�������ڡ���ķ������˹���������;�ʮ�����ڵ�ʱ��������
��ά��WWW�������ӣ�����Զ�ĸı������硣Ŀǰ���������翪��������õ�����ģʽʵ������ԭ��ģʽ��һ���ı�档
���ּܹ�ģʽ�ķ�����������������������еĿ�����ܽ�����ģʽ���˽����������ǣ�Struts ��
Ruby on Rails��������������ܸ��Ժ������ٿ�ܴ������������ӡ��
����Ӧ���е�MVCģʽ
ģ��-��ͼ-�������ܹ�ģʽ�����˼��dz������ǵ�Ӧ�ó����б������������Щְ��
Ӧ�ó��ֳ��������Ҫ�IJ��֣�ÿ�����ָ����ƹܲ�ͬ���������������ǿ�����ϸ�Ľ����Լ�һ�����ӡ�
������
�������ƹ����û��������û����ͼ���û����棨GUI���ϵ�Ԫ��ִ�в���ʱ�����������յ�HTTP
GET����POST���������Ҫ���ܾ��ǵ��ò�Э����Ҫ����Դ/������ִ���û�����ͨ����������Ϊ������ú��ʵ�ģ�ͣ��Լ�ѡ����ʵ���ͼ��
�
ģ����ָ���������֮�ϵ���ݹ����������ݣ���һ���Ӧ��Ӧ�ó�����Ҫ����Ķ��������ϵͳ�У��κ����ﶼ���Ա�����ɿ��Զ�����ij�ַ�ʽ���д����
���ģ�͡�Ӧ�ó����е��û�����Ϣ�Լ�ͼ����ʲô������ֻ��һ�ѱ��밴�ն�Ӧ���������ݣ����ڲ�����δ�������ڣ������ʼ����ض��ĸ�ʽ�����ֵij��Ȳ�
�ܳ�������ַ�ȵȣ�
ģ��������ṩ��һ���û��������ݶ�Ӧ����ݱ�������Ϣ���飬��ᣩ����������������û�չʾ��������ģ�Ͷ�����䡣��Ҳ������Ϊʲô��������ѡ
��ʹ���ĸ���ͼ��չʾ��ݵ�ԭ��
ģ�Ͱ�����Ӧ�ó�����������Ҫ����ɲ��֣���Щ������������Ҫ������������С������������ǰ�Ӧ�ó���������ڲ���֯��������ܼң���
��ͼ
��ͼ�ṩ��չʾģ����ݵIJ�ͬ��ʽ����������������ģ�塣��ͼ�����ж����������������ʹ���ĸ���ͼ��һ������Ӧ��ͨ��������������ģ�ͺ���ͼ��
�ɡ����������Ա�������һ���������������ڽ����û�����������Ȼ���ڵ����ض��Ŀ����������?ͬ�������
�����ǿ�һ������
���ڣ����裬�������ڿ���һ��������ꡣ�û����Խ������²������鿴ͼ�顣ע�ᣬ������ǰ���������Ʒ��������ɾ��ͼ�飨������й���ԱȨ�Ļ�����
���������ǿ������û����������롱�������鿴������������Щ��ʱ�ᷢ��ʲô�����
���ǻ���һ���ض��Ŀ�����������������ͼ����صIJ������鿴���༭�������Ȳ���������������У��ҰѸÿ���������Ϊ
books_controller.php������Ҳ����һ��ģ�ͣ�����
book_model.php����������ݺ����̵���ͼ����Ʒ��ص�����������ǻ���һЩ��ͼ��չʾ��ݣ�����ͼ���嵥��һ���༭ͼ���ҳ��ȵȡ�
�������ͼչʾ�����û������IJ鿴��������δ���ģ�
��������books_controller.php����HTTP
GET����POST�ķ�ʽ���յ��û�������[1]������Ҳ������һ����������������index.php
����������Ȼ�����ٵ���ooks_controller.php��
��������������Լ���Ӧ�IJ���Ȼ�����ģ�ͣ�book_model.php��������ģ�ͷ��ػ������ͼ��[2]��ģ�������ݿ��е�ȡ��Ϣ
[3]��������Ҫ����Լ�����˺�����Ȼ��ͼ���б?
������ʹ��ǡ������ͼ������Щ���չʾ���û�[6-7]������û���ѡ�����ض�Ƥ������Ӧ����ͼ�ļ�Ҳ�ᱻѡ�ϵȵȡ�
MVC�ĺô���ʲô
����ʹ��MVC��һ�������Ժô���������ͼչʾ��Ӧ��������ķ��뿪����
�Բ�ͬ�û��Լ���ͬ�豸���͵�֧��һֱ�ǵ��µ�һ���������⡣����̨ʽ���Ժ��ֻ��������õ�����ͼӦ���Dz���ͬ�ġ�ģ�ͻ᷵����ȫ��ͬ����ݣ����Dz�ͬ
�ĵط��ǿ�������ѡ��ʹ�õ���ͼ�ļ���չʾ��ݣ����ǿ��������Dz�ͬ��ģ�壩��
���˽���ͼ��ҵ�����з��뿪�⣬MVC�ķ���Ҳ�����˴���Ӧ����Ƶ��Ѷȡ�����Ҳ��߽ṹ�ԣ����Ҳ������ά�������Ժ����á�
����ΪʲôҪ����أ�
����ʹ��һ�����ʱ��MVC�Ļ�ṹ�Ѿ��������У���ֻ�����Щ�ṹ�������䣬������ļ�����MVC��ģʽ���õ����ʵ�Ŀ¼��ȥ��������Ҳ�ṩ�����
�ɲ��Ҿ�����ȫ���ԵĹ��ܡ�
��CakePHP��ΪMVC��ܵ����ӡ���һ����װ���Ժ���ᷢ����������Ҫ��Ŀ¼��
* app/
* cake/
* vendors/
APP�ļ����Ƿ�����Ӧ�ó����ļ��ĵط��������㿪��Ӧ�ó���ĵط���
Cake�ļ�����Cakephp���ļ����λ���Լ������ĵط�����ܵ���Ҫ���ܾ������棩
Vendors�ļ����������������Ҫ�ĵ���PHP���ļ���λ�á�
��Ĺ����ļ���(APP�ļ���)����������Щ�ṹ��
* app/
config/
controllers/
locale/
models/
plugins/
tests/
tmp/
vendors/
o views/
o webroot/
��������Ҫ����Ŀ��������õ�controllersĿ¼�£����ģ�ͷ��õ�modelsĿ¼�£�����ͼ�ļ�����viewsĿ¼�¡�
һ������Ϥ�˿�ܣ������������Ҫ�ĺʹ�������ʱ��֪��Ӧ�������ﶯ�֡������ļ���֯��ʽ��ά�������ϲ��١�
�Կ��Ϊ��
��Ϊ����̳̲�������������ʹ��CakePHP����һ��Ӧ�ó�������ֻ��������չʾһ��ģ�ͣ���ͼ�Ϳ���������ʾ���룬����ʹ��MVC������ĺô�
��һ�����ۡ���Щ���붼�Ǽ��˵ģ������ʺ�ʵ�ʵ�Ӧ�á�
����֮ǰ�Ѿ���һ��������꣬������һ��������û���鿴��������������ͼ����嵥������˵����������������Ȼ��Э���������IJ�����
��˵��û����ʱ�������������������ַ��
www.ourstore.com/books/list/fantasy
CakePHP ��URL��ַ��ʽ��/������/����/����1/����2.����IJ����ǿ������ڵ��õ����õĺ���֮ǰ�ϵ�url��ַ����
www.ourstore.com/books_controller.php?action=list&category=fantasy
������
ʹ��CakePHP��ܣ����ǵĿ���������������������
<?php
class BooksController extends AppController {
function list($category) {
$this->set('books',
$this->Book->findAllByCategory($category));
}
function add() { ... ... }
function delete() { ... ... }
... ... } ?>
�ܼ��ǰɡ�����������ᱻ�����
books_controller.php����������/app/controllersĿ¼�¡����һ���б?list����������ִ�����������еIJ�
������Ҳ����������ͼ����صIJ������������ͼ�飬ɾ����ͼ�飩
���Ϊ�����ṩ��������ݣ���������ͼ��ֻ��һ�д��롣�����ڻ�Ŀ�������Ϊ�ж������һ�����࣬�����Ѿ��̳��ˡ���AppController�̳�
��Controller�ģ�
��list�����У�������Ҫ���ľ��ǵ���ģ�ͻ�ȡ��ݣ�Ȼ��ѡ����ʵ���ͼ�ļ��������չʾ���û�������Ҫ���ǽ���һ�¹�̡�
this->Book�����ǵ�ģ�ͣ���������δ���
$this->Book->findAllByCategory($category)
�����ڸ���ģ�ͷ�����ѡ�����µ�ͼ���б�
�����Set����
$this->set('books', $this->Book->findAllByCategory($category));
�Ǹ��߿���������ݴ������ͼ����ģ�ͷ��ص������books�ı����������ͼ��Ȼ����ͼ�оͿ��Է��ʸñ����ˡ�
����������Ҫ��Ⱦ��ͼ���������ʹ��Ĭ����ͼ��CakePHP������Զ���ɡ��������Ҫʹ��������ͼ��������Ҫʹ��render��������������
�
ģ�ͷdz���
<?php
class Book extends AppModel {
}
?>
Ϊʲô�ǿյģ���Ϊ��ӻ���̳���һЩ����Ĺ��ܣ�����ֻ����ѭCakePHP������淶��Ȼ���ܾͻ��Զ���������������顣���硣ͨ����
�֣�CakePHP֪���������BooksController��ʹ�õ�ģ�͡�Ȼ����Զ�������ݿ���һ����books����ݱ?
������壬���ǵ�bookģ�;;߱�����ݿ��ж�ȡ��ɾ��ͱ�����ݵ�������
��δ���Ӧ�ñ����books.php����������/app/models�ļ��¡�
��ͼ
����������Ҫ�����������Ϊlist��������һ����ͼ��������һ�����������ͼ��ʹ��HTML���룬���һ���һЩPHP����������ģ���ṩ��
books���顣
<table> <tr> <th>Title</th>
<th>Author</th> <th>Price</th> </tr>
<?php foreach ($books as $book): ?> <tr> <td>
<?php echo $book['Book']['title']; ?> </td> <td>
<?php echo $book['Book']['author']; ?> </td> <td>
<?php echo $book['Book']['price']; ?> </td> </tr>
<?php endforeach; ?>
</table>
�����Ѿ������ˣ���ͼ�ļ��������һ����ɵ�ҳ�棬��ֻ��һ��HTML���롣������ΪCakePHP�ṩ�˶���ҳ�沼�ֵķ���������ͼ��ᱻ���뵽����
�С��ڴ�����ЩHTMLƬ��ʱ�����Ҳ�ṩһЩ���֣�helper����������������ɳ����������?�����ӣ�Ajax���� JavaScript��
���ǽ����Ĭ����ͼ����Ϊlist.ctp��list�Dz�������ƣ���ctp��ָcakeģ�壩��Ȼ���������
/app/views/books��(֮������booksĿ¼�£�����Ϊ����Book�������IJ���)��
������CakePHP�İ����£�����ֶ�����ˡ�
����
�����Ѿ�ѧϰ�˵�����õļܹ�ģʽMVC��������Ҫע�⣬�������ڱ�̽��ἰ��ģʽʱ������ָ���ǿ����������������������ܹ������ǻᷢ��ʵ��ʹ��
������ǿ����Ľṹ�����䶯������Ϊ��Ҫ���ǣ�����ģʽ�����������Ϣ����ֳ�������ֵ�ְ�𣬱��ڳ���ά�������������Լ����ԡ�
�����Ѿ���ʶ��ʹ��MVC��ܵĺô�����������ṩ��һ�����MVC�Ǽܣ��Լ�������õĹ��ܣ���������ǵ�Ч�ʣ��ÿ�����̸�����ɡ�