BANSYSTEMSBLOG

Load of the ○○○○PHP!?

Actionの削除リンクを画像にしたいですよね!
下記のようにします。

//cakephp1.3
<?php echo $this->Html->link($this->Html->image("delete.jpg"), array('action' => 'delete', $users['User']['id']), array('escape'=>false), sprintf(__('Are you sure you want to delete # %s?', true), $users['User']['id']));?>
var $validate = array(
	'tel' => array(
	'rule'=>array('custom','/\d{2,4}-\d{2,4}-\d{4}/'),
	'message'=>'電話番号を入力してください。'
	)
 );

cakePHPでのバリデーションは便利ですね!
実際の画面にはemailやpasswordなど確認用のフィールドが存在すると思います。
確認用のバリデーションは下記のように設定します。

<?php
class User extends AppModel {
var $name = 'User';

var $validate = array(
	'email' => array(
		'email' => array(
			'rule' => array('email', true),
			'message' => 'メールアドレスを正しく入力してください。'
		),
		'email' => array(
			'rule' => 'isUnique',
			'message' => 'このメールアドレスはすでに使用されています。'
		),
	  'confirmFields' => array(
		'rule' => array('confirmFields', 'email_confirm'),
		'message' => 'emailが一致しません',
		),
	),

	'email_confirm' => array(
		'email' => array(
		'rule' => array('email', true),
		'message' => 'メールアドレスを正しく入力してください。'
		),
	),

	'new_password' => array(
	  'minLength' => array(
		  'rule' => array('minLength', 8),
		  'message' => 'パスワードは8文字以上の長さで入力してください。。'
		  ),
	  'notEmpty' => array(
		'rule' => 'notEmpty',
		'message' => 'パスワードを入力してください。'
			),
	  'confirmFields' => array(
		'rule' => array('confirmFields', 'password_confirm'),
		'message' => 'パスワードが一致しません',
		),
	 ),
	'password_confirm' => array(
	  'minLength' => array(
		  'rule' => array('minLength', 8),
		  'message' => 'パスワードは8文字以上の長さで入力してください。。'
		  ),
	  'notEmpty' => array(
		'rule' => 'notEmpty',
		'message' => 'パスワードを入力してください。'
		),
	),
);

//$data:バリデーション名; $target:フィールド名;
function confirmFields($data, $target) {
	$source = '';
	if (isset($target)) {
		$source = array_shift($data);
	}
	return $source == $this->data[$this->name][$target];
}
?>