MVC Éè¼Æ
ͨ³££¬ÔÚÕâ¸ö½×¶Î»á¸ù¾ÝÓ¦ÓóÌÐòËùÐèµÄ¹¦ÄÜ×ÅÊÖ±àд´úÂë¡£Ò»¸öµÇÂ¼Ò³Ãæ¡¢Ò»¸öÊý¾Ý¿â¡¢×¢²á±íµ¥
¡ª¡ª ¸ã¶¨£¡¶àô¼òµ¥£¡Í¨³£Ò²¾ÍÊÇÕâô¼òµ¥¡£³ý·ÇÄúÏ£Íû¸ü¸ÄÍâ¹Û¡¢¸Ä±äÓëÊý¾Ý¿â½»»¥µÄ·½·¨¡¢¸ü¸Ä¼ìÑ鹿Ôò»òÔÚ¸ù±¾Éϸü¸ÄÓ¦ÓóÌÐòµÄÄ³Ð©ÖØÒª·½ÃæÊ±£¬ÊÂÇé²Å»á¿ªÊ¼±äµÃ¸´ÔÓÆðÀ´¡£
CakePHP µÄÉè¼ÆÄ¿µÄÊǾ¡¿ÉÄÜÇáËɵرàдӦÓóÌÐò£¬Í¬Ê±Ìṩ¿ÉÒÔ³¤ÆÚά»¤µÄÓ¦ÓóÌÐò¡£±¾½Ì³Ì½«¸æËßÄúÔõÑùʹÓÃ
MVC Éè¼ÆÄ£Ê½¹¹½¨ Tor¡£CakePHP ½«ÏòÄúչʾÕâ¸ö¹ý³Ì»áÊǶàôÇáËÉ¡£Äú×Ô¼º»áÌå»áµ½Ê¹Óà CakePHP
µÄÒâÒå¡£
MVC Éè¼ÆÄ£Ê½½«Ó¦ÓóÌÐò·ÖΪÈý¸ö²»Í¬µÄ²ã£¬·Ö±ðÊÇÊý¾Ý´¦Àí¡¢UI ºÍÂß¼¡£Design
Patterns: Elements of Reusable Object-Oriented Software
Ò»Ê飨Ҳ³ÆÎª ¡°Gang Of Four¡±£©Ê״νéÉÜÁË MVC¡£È«ÃæÌÖÂÛÉè¼ÆÄ£Ê½ºÍ MVC ³¬³öÁ˱¾½Ì³ÌµÄ·¶Î§£¬µ«Ëü¶ÔÁ˽âÕâÈý¸ö²¿·ÖµÄº¬ÒåÊǺÜÓаïÖúµÄ
¡ª¡ª ÓÈÆäÊÇÔÚ CakePHP ÁìÓòÖС£
Ä£ÐÍ
Óû§¡¢²úÆ·¡¢¼Û¸ñ¡¢ÏûÏ¢ ¡ª¡ª ´Ó±¾ÖÊÉÏ¿´£¬ËüÃǶ¼½ö½öÊÇÊý¾Ý¡£È·±£Êý¾ÝÊÇÄúËùÐèÒªµÄ£¬ÈÃÊý¾Ý½øÈëÊý¾Ý¿â£¬È»ºóÔÙ´ÓÊý¾Ý¿âÖÐÈ¡³öÊý¾Ý¡£ºÜÓбØÒª½«
Tor µÄËùÓÐÊý¾Ý´¦Àí¹¦Äܶ¼·ÅÔÚÒ»¸öλÖá£Õâ¾ÍÊÇÄ£Ð͵Ä×÷Óá£
Ä£ÐÍÖ÷Òª¿¼ÂǵÄÊÇ´¦ÀíÊý¾Ý¡£´ÓÊý¾Ý¿âÖлñÈ¡Êý¾Ý¡¢½«Êý¾Ý²åÈëÊý¾Ý¿â¡¢¼ìÑéÊý¾Ý
¡ª¡ª ËùÓÐÕâЩ²Ù×÷¶¼ÊÇÔÚÄ£ÐÍÄÚ½øÐеġ£
Ò»¸öµ¥¶ÀµÄÄ£ÐÍͨ³£ÓÃÓÚ·ÃÎÊÊý¾Ý¿âÖÐÌØ¶¨µÄ±í¡£Í¨³££¬Èç¹û±íÃûÊÇÄ£ÐÍÃû³ÆµÄ¸´ÊýÐÎʽ£¬ÔòÄ£Ðͽ«ÓëÕâ¸öÊý¾Ý¿â±íÏà¹ØÁª¡£ÀýÈ磬product
Ä£ÐÍÔÚĬÈÏÇé¿öϽ«Óë products ±íÏà¹ØÁª¡£Óû§¶¨ÒåµÄËùÓÐÄ£ÐͶ¼½«À©Õ¹ CakePHP AppModel
Àà¡£
user Ä£ÐÍ
ÔÚΪ Tor ´´½¨ÁË users ±íºó£¬ÐèÒªÒ»¸ö user Ä£ÐÍÓë¸Ã±í½øÐн»»¥¡£user
Ä£Ðͽ«±£´æÓû§Êý¾Ý£¬ÌæÄú´Ó±íÖÐÈ¡»ØÊý¾Ý£¬²¢¼ìÑéÓû§Êý¾ÝÊÇ·ñÊǿɽÓÊܵĸñʽ¡£Ä¿Ç°£¬Õâ¸öÄ£ÐÍ¿ÉÒÔÊÇÒ»¸ö´æ¸ù¡£ËüÓ¦µ±×÷Ϊ
app/models/user.php ´´½¨£¬ÄÚÈÝ¿ÉÄÜÀàËÆÓÚÇåµ¥ 10¡£
Çåµ¥ 10. user Ä£ÐÍ
<?php class User extends AppModel { var $name = 'User'; } ?> |
Çë×¢Òâ var $name = 'User'; ÐС£ÔÚ $name ÖÐÖ¸¶¨Ä£Ð͵ÄÃû³ÆÊǹ«ÈϵÄ×î¼Ñʵ¼ù¡£
ÊÓͼ
Èç¹û²»ÄÜÏÔʾÊý¾Ý£¬ÄÇô±£´æ¡¢»ñÈ¡ºÍ¼ìÑéÊý¾Ý¾Íû¶à´óÓô¦¡£Í¨¹ý½«ËùÓÐÏÔʾºÍ±íʾ´úÂë·ÅÔÚͬһ¸öλÖ㬿ÉÒÔ·½±ãµØ¸ü¸ÄÓ¦ÓóÌÐòµÄÍâ¹ÛºÍ¸Ð¾õ£¬¶øÎÞÐèÐÞ¸ÄÓëÓ¦ÓóÌÐòÂß¼ºÍÊý¾ÝÏà¹ØµÄ´úÂë¡£
ÊÓͼÖ÷Òª¿¼ÂǵÄÊǸñʽ»¯ÏÔʾ¸øÓû§µÄÊý¾Ý¡£ÊÓͼÓÃÓÚ±íʾËùÓÐ UI ½á¹û£¬°üÀ¨ËùÓÐÄ£°åºÍ HTML¡£CakePHP
µÄÊÓͼÎļþÊÇǶÈëÁË PHP ´úÂëµÄ³£¹æ HTML Îļþ¡£
×îºó£¬ÊÓͼ¾ÍÊÇÒ»¸öÒ³ÃæÄ£°å¡£Í¨³££¬ÊÓͼ¶¼¸ù¾ÝÓëÖ®Ïà¹ØÁªµÄ²Ù×÷À´ÃüÃû¡£ÀýÈ磬display() ²Ù×÷ͨ³£»áÓÐÒ»¸ö
display ÊÓͼ¡£
·µ»Øµ½Ê¾ÀýÓ¦ÓóÌÐò£¬ÎÒÃÇÒѾ´´½¨Ò»¸ö users ±íºÍÓë´Ë±í½øÐн»»¥µÄ user Ä£ÐÍ¡£ÏÖÔÚÎÒÃÇÐèҪһЩÊÓͼ¡£Óû§ÐèҪע²áÕÊ»§²¢µÇ¼µ½Ó¦ÓóÌÐòÖС£Õ⽫ÐèÒª
register ÊÓͼºÍ login ÊÓͼ¡£
register ÊÓͼ
Óû§ÐèÒªÏÈ×¢²áÒ»¸öÕÊ»§£¬È»ºó²ÅÄÜʹÓà Tor Ó¦ÓóÌÐò¡£Õ⽫ÐèÒªÒ»¸ö register ÊÓͼ£¬Õâ¸öÊÓͼ½«ÏòÓû§ÏÔʾע²á±íµ¥¡£ÄúÓ¦µ±ÒѾ֪µÀ
Tor ÐèÒªÄÄЩÓû§Êý¾ÝÁË¡£¾ßÌåµØËµ£¬ÐèÒªÊÕ¼¯Óû§Ãû¡¢ÃÜÂë¡¢µç×ÓÓʼþµØÖ·¡¢Ãû×ÖºÍÐÕÊÏ¡£
register ÊÓͼӦµ±±»´´½¨Îª app/views/users/register.ctp£¬ÄÚÈÝ¿ÉÄÜÀàËÆÓÚÇåµ¥
11¡£
Çåµ¥ 11. register ÊÓͼ
<form action="/users/register" method="post"> <p>Please fill out the form below to register an account.</p> <label>Username:</label><input name="username" size="40" />
<label>Password:</label><input
type="password" name="password"
size="40"
/>
<label>Email Address:</label><input
name="email" size="40"
maxlength="255" />
<label>First Name:</label><input
name="first_name" size="40"
/>
<label>Last Name:</label><input
name="last_name" size="40"
/>
<input type="submit" value="register"
/>
</form> |
Çмǣ¬×Ö¶ÎÃûÒªÓëÊý¾Ý¿âÖеÄÁÐÃûÏàͬ£¬×ñÑ´ËÔÔòÔÚ´¦Àí users ¿ØÖÆÆ÷ʱ»áÓÐÓá£ÔÚºóÃæÌÖÂÛ Cake
µÄ¸ü¶àÐÅÏ¢ºÍ Cake helper µÄ¹¤×÷ÔÀíʱ£¬½«ÍêÈ«ÖØÐ´Õâ¸öÒ³Ãæ£¬µ«ÊÇÕâ¸öÒ³ÃæÄ¿Ç°½ö½öÊdz£¹æµÄ HTML¡£
¿ØÖÆÆ÷
ÏÖÔÚ£¬Êý¾Ý´¦ÀíÈ«¶¼°üº¬ÔÚÄ£ÐÍÄÚ£¬±íʾ²ãÈ«¶¼°üº¬ÔÚÊÓͼÄÚ£¬Ó¦ÓóÌÐòµÄÆäÓಿ·Ö½«È«¶¼°üº¬ÔÚ¿ØÖÆÆ÷ÖС£ÔÚ¿ØÖÆÆ÷ÖУ¬Ö´ÐÐÂß¼¡¢¾ö²ß¡¢¹¤×÷Á÷¼°Ó¦ÓóÌÐòËùÉæ¼°µÄÆäËû²Ù×÷¡£Ä£Ð͹ÜÀíÊý¾Ý£¬ÊÓͼÏÔʾÊý¾Ý£¬¿ØÖÆÆ÷Ö´ÐÐÆäËûËùÓвÙ×÷¡£
¿ØÖÆÆ÷¹ÜÀí·þÎñÆ÷ÇëÇó¡£Ëü½ÓÊÜÓû§ÊäÈ루URL ÇëÇó¡¢±íµ¥ POST¡¢GET ÇëÇóµÈµÈ£©£¬ÔÚ±ØÒªÊ±Ó¦ÓÃÂß¼£¬ÔÚÐèÒªÊý¾Ý´¦Àíʱµ÷ÓÃÄ£ÐÍ£¬²¢Í¨¹ýÊʵ±µÄÊÓͼ·¢ËÍÊä³ö¡£
ͨ³££¬Ò»¸ö¿ØÖÆÆ÷½«¹ÜÀíÒ»¸öÄ£Ð͵ÄÂß¼¡£¿ØÖÆÆ÷°üº¬ÈÎÒâÊýÄ¿µÄº¯Êý£¨Ò²³ÆÎª²Ù×÷£©¡£ÔÚµäÐÍÇé¿öÏ£¬²Ù×÷»áÓ¦ÓÃÂß¼²¢ÏÔʾÊÓͼ¡£Óû§¶¨ÒåµÄËùÓпØÖÆÆ÷¶¼ÐèÒªÀ©Õ¹
CakePHP AppController Àà¡£
ÔÚ Tor ÖУ¬ÒÑ´´½¨ÁËÒ»¸ö users ±í¡¢Ò»¸öÓë¸Ã±í½øÐн»»¥µÄ user Ä£ÐÍÒÔ¼°ÏòÓû§ÏÔʾע²á±íµ¥ºÍµÇ¼±íµ¥µÄÊÓͼ¡£ÕâЩ±íµ¥½«Ìá½»µ½
users ¿ØÖÆÆ÷£¬·Ö±ðµ÷Óà register ºÍ login ²Ù×÷¡£users ¿ØÖÆÆ÷Ó¦µ±´´½¨Îª app/controllers/users_controller.php£¬×î³õµÄÄÚÈÝÓ¦µ±ÀàËÆÓÚÇåµ¥
12¡£
Çåµ¥ 12. users ¿ØÖÆÆ÷
<?php class UsersController extends AppController { } ?> |
register ²Ù×÷
ÏÖÔÚÒѾÓÐÁËÒ»¸ö¿ØÖÆÆ÷¡£µ«Ëü»¹²»×öÈκÎÊÂÇé¡£ÔÚÈÃËüΪÄú·þÎñ֮ǰ£¬±ØÐëÏȸøËü¶¨ÒåһЩҪִÐеIJÙ×÷¡£
ÏÖÔÚ½«ÉîÈë̽ÌÖ¾ßÌåϸ½Ú¡£Óû§ÒѾÌîºÃÁË±íµ¥²¢½«ÆäÌá½»¸øÓ¦ÓóÌÐò¡£ÉԺ󽫽éÉÜÊý¾Ý¼ìÑé¡£ÏÖÔÚ£¬ÎÒÃÇÖ»½«Êý¾Ý½»¸øÊý¾Ý¿â£¬ÕâÐèÒª½«
register ²Ù×÷Ìí¼Óµ½ users ¿ØÖÆÆ÷ÖУ¨¼ûÇåµ¥ 13£©¡£
Çåµ¥ 13. register ²Ù×÷
<?php class UsersController extends AppController { function register() { if (!empty($this->params['form'])) { if ($this->User->save($this->params['form'])) { $this->flash('Your registration information was accepted.', '/users/register'); } else { $this->flash('There was a problem with your registration', '/users/register'); } } } } ?> |
register ²Ù×÷ÏȲ鿴±íµ¥ ($this->params['form'])£¬¼ì²éËüÊÇ·ñÒÑÌá½»¡£Èç¹û±íµ¥ÉÐδÌá½»£¬Ôò²»½øÐÐÈκδ¦Àí¡£µ±ÖªµÀ±íµ¥Ìá½»ÁËÊý¾ÝÖ®ºó£¬¿ØÖÆÆ÷½«¶Ô
user Ä£Ð͵÷Óà save ·½·¨£¨¸ÃÄ£ÐÍÊÇ AppModel µÄÀ©Õ¹£©¡£ÔÚĬÈÏÇé¿öÏ£¬save ·½·¨½«²éÕÒ±íÃûÊÇÄ£ÐÍÃûµÄ¸´ÊýµÄ±í¡£ÔÚÕâ¸öʾÀýÖУ¬Ëü½«²éÕÒÓë
user Ä£ÐÍÏà¶ÔÓ¦µÄ users ±í¡£Èç¹ûÕÒµ½¸Ã±í£¬Ôò save ·½·¨½«°Ñ´«µÝµÄÊý×é ($this->params['form'])
ת»»ÎªÒ»¸ö INSERT Óï¾ä£¬Õâ¸öÓï¾äʹÓÃÊý×é¼ü×÷ΪÁÐÃû£¬Ê¹ÓÃÊý×éÖµ×÷Ϊ INSERT Öµ¡£
´øÊý¾ÝµÄ±íµ¥±»Ìá½»Ö®ºó£¬¿ØÖÆÆ÷½«µ÷Óà user Ä£ÐÍÉ쵀 save ·½·¨£¬¸Ã·½·¨ÊÇ AppModel
µÄÀ©Õ¹¡£Ä¬ÈÏÇé¿öÏ£¬save ·½·¨½«²éÕÒÄ£Ð͸´ÊýµÄ±í¡£ÔÚÕâÀËü½«²éÕÒÓë user Ä£ÐͶÔÓ¦µÄ users
±í¡£Èç¹ûÕÒµ½¸Ã±í£¬save ½«°Ñ´«µÝµÄ ($this->params['form']) Êý×éת»»Îª
INSERT Óï¾ä£¬ÆäÖÐʹÓÃÊý×é¼ü×÷ΪÁÐÃû£¬Ê¹ÓÃÊý×éÖµ×÷Ϊ INSERT Öµ¡£ÔÚÕâÀ$this->params['form']
½«ÀàËÆÓÚÇåµ¥ 14¡£
Çåµ¥ 14. $this->params['form'] Êý×é
Çåµ¥ 14. $this->params['form'] Êý×é Array ( [username] => zaphod [password] => secret [email] => beeblebrox@heartofgold.hhg [first_name] => zaphod [last_name] => beeblebrox ) |
save ·½·¨½«¸ù¾ÝÆäÓಿ·Ö¹¹½¨Ò»¸ö INSERT Óï¾ä¡£Õâ¸öÓï¾ä½«ÀàËÆÓÚÇåµ¥ 15¡£
Çåµ¥ 15. INSERT Óï¾ä
INSERT INTO users (username, password, email, first_name, last_name) VALUES ('zaphod', 'secret', 'beeblebrox@heartofgold.hhg', 'zaphod', 'beeblebrox') |
ΪʲôҪÔÚ register ÊÓͼÖÐʹÓÃÊý¾Ý¿âÁÐÃû×÷Ϊע²á±íµ¥×Ö¶ÎÃû£¬ÔÒòÏÖÔھͺÜÃ÷ÏÔÁË¡£Í¨¹ýÕâÑù×ö£¬ÏÔÖøµØ¼ò»¯Á˱£´æÊý¾ÝµÄ¹ý³Ì¡£
½ÓÏÂÀ´£¬Èç¹ûÊý¾Ý³É¹¦µØ²åÈëÁË£¬Ôò register ²Ù×÷½«µ÷Óà Flash ·½·¨¡£Flash ÏòÓû§ÏÔʾһÌõ»ù±¾ÏûÏ¢£¨ÔÚ±¾ÀýÖУ¬ÎªÒ»Ìõ³É¹¦»òʧ°ÜÏûÏ¢£©ºÍÒ»¸öÀ뿪´ËÏûÏ¢µÄÁ´½Ó£¨ÔÚ±¾ÀýÖУ¬·µ»Øµ½
register ÊÓͼ£¬ÒòΪÉÐ䶨ÒåÈÎºÎÆäËûÄÚÈÝ£©¡£
ÏÖÔÚÒѾÓÐÁËÒ»¸öÓë users ±í½øÐн»»¥µÄ user Ä£ÐÍ£¬Ò»¸öÓÃÓÚÏÔʾע²á±íµ¥µÄ register
ÊÓͼ£¬ÒÔ¼°ÅäÓÐ register ²Ù×÷µÄ users ¿ØÖÆÆ÷£¬¿ÉÒÔʵ¼Ê¿´¿´Ó¦ÓóÌÐòµÄÔËÐÐÇé¿öÁË¡£
ÊÔÔËÐÐ
ËùÓÐ×é¼þ¶¼ÒÑÕûºÏµ½ÁËÒ»Æð¡£¸ÃÈà Tor »î¶¯ÆðÀ´ÁË¡£´ò¿ªä¯ÀÀÆ÷¡£·ÃÎÊ http://localhost/users/register
×°ÔØ register ÊÓͼ¡£Äú½«¿´µ½ÀàËÆÍ¼ 4 µÄÄÚÈÝ¡£

ͼ 4. ×°ÔØ register ÊÓͼ
×°ÔØ register ÊÓͼ
Ìîд²¢Ìá½»±íµ¥¡£Ó¦µ±»á¿´µ½³É¹¦ÏûÏ¢£¨¼ûͼ 5£©¡£

ͼ 5. ³É¹¦ÏûÏ¢
³É¹¦ÏûÏ¢
Èç¹û²é¿´Êý¾Ý¿â£¬Ó¦µ±»á¿´µ½Ò»ÌõÓë±íµ¥Ìá½»Ïà¶ÔÓ¦µÄ¼Ç¼£¬´Ë¹ý³ÌʹÓÃÃ÷ÎÄÃÜÂ루·Ç³£Ôã¸âµÄ×ö·¨£¬ÉÔºó½â¾öÕâ¸öÎÊÌ⣩¡£³¢ÊÔʹÓÃÏàͬµÄÐÅÏ¢ÖØÐÂÌîд±íµ¥¡£Ó¦µ±»á¿´µ½Ê§°ÜÏûÏ¢£¨¼ûͼ
6£©¡£

ͼ 6. ×¢²áʧ°Ü
×¢²áʧ°Ü
Èç¹ûʹÓõÄÊÇÖ§³Ö UNIQUE ×Ö¶ÎÔ¼ÊøµÄÊý¾Ý¿â£¬Ôò×¢²á½«Ê§°Ü¡£ÔÚ´´½¨ users ±íµÄ¹ý³ÌÖУ¬Óû§ÃûºÍµç×ÓÓʼþ×ֶα»¶¨ÒåΪ
UNIQUE £¬ÕâÒâζ×ÅÕâЩ×ֶεÄÖµ²»ÄÜÖØ¸´¡£µ±Êý¾Ý¿âÅ׳öÕâ¸ö´íÎóʱ£¬CakePHP »áʶ±ð³ö¸Ã´íÎó²¢ÏÔʾ´íÎó¡£
|