ããããç³ãè¾¼ã¿ããåãåããç»é¢ã®æ©è½ãCakePHPã§ä½ã£ã¦ã¿ãã
ç³ãè¾¼ã¿ç»é¢â確èªç»é¢ï¼ããªãã¼ã·ã§ã³ãã§ãã¯ï¼âå®äºç»é¢
ã¨ããæµãã
DBã®ä½æ
moushikomiãã¼ãã«ãä½æ
CREATE TABLE `testcake`.`moushikomi` ( `id` INT NOT NULL AUTO_INCREMENT, `namekanji` TEXT, `namekana` TEXT, `email` TEXT, `tel` TEXT, `postcode` TEXT, `address` TEXT, `detail` TEXT, `created` DATETIME, `modified` DATETIME, PRIMARY KEY ( `id`) ) CHARACTER SET utf8;
ã¢ãã«ã®ä½æ
app/models/moushikomi.phpã¨ããååã§ãä¸è¨ã®ããã«ã¢ãã«ãä½æ
ã¢ãã«ã®ä¸ã«ããªãã¼ã·ã§ã³ãã§ãã¯ãè¨è¿°ããã
ããªãã¼ã·ã§ã³ã®è¨è¿°æ¹æ³ã¯ãCakePHP1.2ã®ã¿ã®æ¹æ³ãå«ã¾ãã¦ãã¾ãã
<?php class Moushikomi extends AppModel { var $name = 'Moushikomi'; var $useTable='moushikomi'; //moushikomiãã¼ãã«ãå©ç¨ããã var $validate = array( 'namekanji' => array( "rule1" => array('rule' => array('maxlength','50'), 'message' => 'åå(æ¼¢å)ã¯50æå以å ã§ã' ), "rule2" => array('rule' => VALID_NOT_EMPTY, 'message' => 'åå(æ¼¢å)ãå ¥åãã¦ãã ãã' ), ), 'namekana' => array( "rule1" => array('rule' => array('maxlength','50'), 'message' => 'åå(ã«ã)ã¯50æå以å ã§ã' ), "rule2" => array('rule' => VALID_NOT_EMPTY, 'message' => 'åå(ã«ã)ãå ¥åãã¦ãã ãã' ), ), 'email' => array( "rule1" => array('rule' => array('maxlength','128'), 'message' => 'emailã¯128æå以å ã§ã' ), "rule2" => array('rule' => array("email",true), 'message' => 'æ£ããã¡ã¼ã«ã¢ãã¬ã¹ãå ¥åãã¦ãã ãã' ), ), 'tel' => array( "rule1" => array('rule' => array('maxlength','50'), 'message' => 'é»è©±çªå·ã¯50æå以å ã§ã' ), "rule2" => array('rule' => array("custom",'/^\d{2,4}(-)*\d{2,4}(-)*\d{4}$/'), 'message' => 'æ£ããé»è©±çªå·ãå ¥åãã¦ãã ãã' ), ), 'postcode' => array( "rule1" => array('rule' => array('maxlength','10'), 'message' => 'éµä¾¿çªå·ã¯10æå以å ã§ã' ), "rule2" => array('rule' => array("custom",'/^\d{3}(-)*\d{4}$/'), 'message' => 'æ£ããéµä¾¿çªå·ãå ¥åãã¦ãã ãã' ), ), 'address' => array( "rule1" => array('rule' => array('maxlength','100'), 'message' => 'ä½æã¯100æå以å ã§ã' ), "rule2" => array('rule' => VALID_NOT_EMPTY, 'message' => 'ä½æãå ¥åãã¦ãã ãã' ), ), 'detail' => array( "rule1" => array('rule' => array('maxlength','1000'), 'message' => 'ç³ãè¾¼ã¿å 容ã¯1000æå以å ã§ã' ), "rule2" => array('rule' => VALID_NOT_EMPTY, 'message' => 'ç³ãè¾¼ã¿å 容ãå ¥åãã¦ãã ãã' ), ), ); } ?>
ç¶ãã¦ã³ã³ããã¼ã©ã
app/controllers/moushikomi_controller.phpã¨ãããã¡ã¤ã«ãä½ãã
indexã§å
¥åç»é¢ã表示ããconfirmã§ç¢ºèªç»é¢ãcompleteã§ç»é²å®äºãè¡ãã
<?php class MoushikomiController extends AppController { var $name = 'Moushikomi'; var $uses = array('Moushikomi'); //Moushikomiã¢ãã«ãå©ç¨ãã var $layout = "moushikomi"; //layoutã§moushikomi.ctpãå©ç¨ãã var $pageTitle = "ç³ãè¾¼ã¿ç»é¢ã®ã¿ã¤ãã«ã§ã"; //layoutãã¡ã¤ã«ã®$title_for_layoutã«ã¿ã¤ãã«ãã»ãããã function index() { } function confirm(){ //ããªãã¼ã·ã§ã³ãã§ã㯠$this->Moushikomi->set($this->data); $error = $this->validateErrors($this->Moushikomi); //ããªãã¼ã·ã§ã³ã¨ã©ã¼ãããã°ãindexç»é¢ã«æ»ããã¨ã©ã¼ã表示ãã if(!empty($error)){ //ããªãã¼ã·ã§ã³ãã¨ã©ã¼ã«ãªã£ãããindexã®htmlãèªã¿è¾¼ã //ã¨ã©ã¼ã¡ãã»ã¼ã¸ããindexã®viewã®errorsã«ã»ãã $this->set("errors",$error); $this->render($action = "index"); } } function complete(){ if (!empty($this->data)) { $this->Moushikomi->create(); //ãã¼ã¿ãDBã«ç»é² if ($this->Moushikomi->save($this->data)) { //ã¡ã¼ã«éä¿¡ãæ¸ã }else{ $this->flash(__('DBã¨ã©ã¼', true), array('action'=>'index')); $this->_stop(); } } } }
ä»åãcompleteã¡ã½ããã§ãDBç»é²å®äºå¾ã«ã¡ã¼ã«éä¿¡ã®ç®æãè¨è¼ããäºå®ã ã£ããã
cakePHP1.2ã§ã¯ã¡ã¼ã«ã®æ¥æ¬èªã«ä¸å
·åããããããã¨ããããå¾åãã
æ¬å½ã¯å®äºç»é¢ã®æã«å度ããªãã¼ã·ã§ã³ãã§ãã¯ãããæ¹ããããã©ãä»åã¯çç¥ã
æå¾ã«Viewãè¨è¿°ã
Viewã¯CakePHPã®ãã©ã¼ã æ©è½ã使ã£ã¦ã¿ããè£å®ã¨ãããã¦ãã¸æ¥½ï¼
ã¾ãã¯indexã®View
app/views/moushikomi/index.ctpãä½ã
<!-- $form->create("Moushikomi")ã¨ãã£ã¦ãã¾ãã¨ãMoushikomisã³ã³ããã¼ã©ã¼ã«POSTãã¦ãã¾ãã®ã§ãçç¥ãã --> <?php echo $form->create(array("action" => "confirm", "type" => "post"));?> <!-- ã¨ã©ã¼ã¡ãã»ã¼ã¸ã®è¡¨ç¤º åä¸è¡¨ç¤º(ä»åã¯ãã£ã¡ã¯å©ç¨ããªã) --> <!-- <?php echo $form->error("Moushikomi.namekanji"); ?> --> <!-- ã¨ã©ã¼ã¡ãã»ã¼ã¸ã®è¡¨ç¤º ã³ã³ããã¼ã©ã§$errorã«å ¥ããã¨ã©ã¼æååã®é åãå±éãã¦è¡¨ç¤º --> <?php if(!empty($errors)){ foreach ($errors as $error){ echo h($error) . "<br/>"; } } ?> <fieldset> <legend><?php __('ç³ãè¾¼ã¿ç»é¢');?></legend> <!-- ä¸è¨ã®ããã«ãcakePHPã®formãã«ãã使ã£ãhtmlã¿ã°åºåãè¡ãã¨ãã¨ã©ã¼ç»é¢è¡¨ç¤ºã®éãªã©ã«POSTãããã¼ã¿ã ãããããvalueã«ã»ãããã¦ããã¦æ¿ãã便å©ï¼ã --> ååï¼æ¼¢åï¼<?php echo $form->text("Moushikomi.namekanji", $options=array("size" => "10", "maxlength" => "50")); ?> <br/> ååï¼ããªï¼<?php echo $form->text("Moushikomi.namekana", $options=array("size" => "10", "maxlength" => "50")); ?> <br/> ã¡ã¼ã«ã<?php echo $form->text("Moushikomi.email", $options=array("size" => "10", "maxlength" => "128")); ?> <br/> é»è©±çªå·ã<?php echo $form->text("Moushikomi.tel", $options=array("size" => "10", "maxlength" => "50")); ?> <br/> éµä¾¿çªå·ã<?php echo $form->text("Moushikomi.postcode", $options=array("size" => "10", "maxlength" => "10")); ?> <br/> ä½æã<?php echo $form->text("Moushikomi.address", $options=array("size" => "10", "maxlength" => "100")); ?> <br/> ç³ãè¾¼ã¿å 容ã<?php echo $form->textarea("Moushikomi.detail", $options=array("rows" => "10", "maxlength" => "1000")); ?> </fieldset> <?php echo $form->end('Submit');?>
ç¶ãã¦ã確èªç»é¢ã
app/views/moushikomi/confirm.ctpãä½ãã
ååï¼æ¼¢åï¼ï¼ã<?php echo h( $form->value("Moushikomi.namekanji") ) ?> <br/> ååï¼ã«ãï¼ï¼ã<?php echo h( $form->value("Moushikomi.namekana") ) ?> <br/> Emailï¼ã<?php echo h( $form->value("Moushikomi.email") ) ?> <br/> é»è©±çªå·ï¼ã<?php echo h( $form->value("Moushikomi.tel") ) ?> <br/> éµä¾¿çªå·ï¼ã<?php echo h( $form->value("Moushikomi.postcode") ) ?> <br/> ä½æï¼ã<?php echo h( $form->value("Moushikomi.address") ) ?> <br/> ç³ãè¾¼ã¿æ å ±ï¼<br/> <?php echo nl2br( h( $form->value("Moushikomi.detail") ) ) ?> <br/> <?php echo $form->create(array("action" => "complete", "type" => "post"));?> <?php echo $form->hidden("Moushikomi.namekanji", array("value" => $form->value("Moushikomi.namekanji") ) ); ?> <?php echo $form->hidden("Moushikomi.namekana", array("value" => $form->value("Moushikomi.namekana") ) ); ?> <?php echo $form->hidden("Moushikomi.namekana", array("value" => $form->value("Moushikomi.namekana") ) ); ?> <?php echo $form->hidden("Moushikomi.email", array("value" => $form->value("Moushikomi.email") ) ); ?> <?php echo $form->hidden("Moushikomi.tel", array("value" => $form->value("Moushikomi.tel") ) ); ?> <?php echo $form->hidden("Moushikomi.postcode", array("value" => $form->value("Moushikomi.postcode") ) ); ?> <?php echo $form->hidden("Moushikomi.address", array("value" => $form->value("Moushikomi.address") ) ); ?> <?php echo $form->hidden("Moushikomi.detail", array("value" => $form->value("Moushikomi.detail") ) ); ?> <?php echo $form->end('ç»é²');?> <!-- hiddenã¯valueã®ç®æãçç¥ãããã¿ã¼ã³ã§ãOK --> <?php echo $form->create(array("action" => "index", "type" => "post"));?> <?php echo $form->hidden("Moushikomi.namekanji"); ?> <?php echo $form->hidden("Moushikomi.namekana"); ?> <?php echo $form->hidden("Moushikomi.namekana" ); ?> <?php echo $form->hidden("Moushikomi.email" ); ?> <?php echo $form->hidden("Moushikomi.tel" ); ?> <?php echo $form->hidden("Moushikomi.postcode" ); ?> <?php echo $form->hidden("Moushikomi.address" ); ?> <?php echo $form->hidden("Moushikomi.detail" ); ?> <?php echo $form->end('æ»ã');?>
æå¾ã«ãç»é²å®äºç»é¢
app/views/moushikomi/complete.ctpãä½ã
ç³ãè¾¼ã¿ãããã¨ããããã¾ããã <br/> <br/> <a href="index">æ»ã</a>
ããããããã¿ãªã©ãå®ç¾©ããã¬ã¤ã¢ã¦ããã¡ã¤ã«ãä½ãã
ã³ã³ããã¼ã©ã§$layoutã§å
¥ãããã¡ã¤ã«åã®ã¬ã¤ã¢ã¦ããã¡ã¤ã«ã¨ãªãã
app/views/layouts/moushikomi.ctp
$content_for_layout ã®ç®æã«viewã§å®ç¾©ãããã¡ã¤ã«ã®å
容ãåºåãããã
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <?php echo $html->charset(); ?> <title> <?php echo $title_for_layout; ?> </title> <?php echo $html->meta('icon'); echo $html->css('cake.generic'); echo $scripts_for_layout; ?> </head> <body> <div id="container"> <div id="header"> <h1>ç³ãè¾¼ã¿ç»é¢</h1> </div> <div id="content"> <?php if ($session->check('Message.flash')): $session->flash(); endif; ?> <?php echo $content_for_layout; ?> </div> <div id="footer"> ããã¿ã¼ã§ã </div> </div> </body> </html>
ã¨ãããããã¡ã¼ã«éä¿¡æ©è½ãé¤ããç³ãè¾¼ã¿ã¢ããªãå®æã
Viewã®formãã«ãã¼ãä»åã¯ä½¿ã£ãããã®ä½¿ãæ¹ãªã©ã調ã¹ãã®ã«åè¦å
«è¦ãã¦æéãããã£ã¦ãã¾ã£ããã
ä¸åº¦è¦ãã¦ãã¾ãã°ãã®ãã«ãã¼ã¯ä¾¿å©ï¼
CakePHP1.2ã®ãããããªæ©è½ã¯ããCakePHP ãã±ãããªãã¡ã¬ã³ã¹ãã¨ããæ¬ãåèã«ãªã£ãã

CakePHP ãã±ãããªãã¡ã¬ã³ã¹ (Pocket Reference)
- ä½è : æ ªå¼ä¼ç¤¾ãã«ã¼ãªã¼ã·ã£ã³å²¡ç°ä½³å ¸
- åºç社/ã¡ã¼ã«ã¼: æè¡è©è«ç¤¾
- çºå£²æ¥: 2008/06/18
- ã¡ãã£ã¢: åè¡æ¬ï¼ã½ããã«ãã¼ï¼
- è³¼å ¥: 11人 ã¯ãªãã¯: 129å
- ãã®ååãå«ãããã° (15件) ãè¦ã
ããå°ã楽ã«ãªã£ã¦ã»ããã®ã¯ãViewã®ãã«ãã¼ã§ã®è¨è¿°ã
POSTããããã¼ã¿ããhiddenã¿ã°ãèªåçæã¾ã§ãããã¨ãããå°ã楽ã«ãªã£ã¦ããããªã¨æãã