protected function _setValidate()
{
foreach ($this->mailFields as $mailField) {
$mailField = $mailField['MailField'];
if ($mailField['valid'] && !empty($mailField['use_field'])) {
// 必須項目
if ($mailField['valid'] == 'VALID_NOT_EMPTY') {
if ($mailField['type'] == 'file') {
if (!isset($this->data['MailMessage'][$mailField['field_name'] . '_tmp'])) {
$this->validate[$mailField['field_name']] = array('notBlank' => array('rule' => array('notFileEmpty'), 'message' => '必須項目です。', 'required' => true));
}
} else {
$this->validate[$mailField['field_name']] = array('notBlank' => array('rule' => array('notBlank'), 'message' => '必須項目です。', 'required' => true));
}
// メール形式
} elseif ($mailField['valid'] == 'VALID_EMAIL') {
$this->validate[$mailField['field_name']] = array('email' => array('rule' => array('email'), 'message' => '形式が不正です。'));
// 半角数字
} elseif ($mailField['valid'] == '/^([0-9]+)$/') {
$this->validate[$mailField['field_name']] = array('rule' => '/^([0-9]+)$/', 'message' => '半角数字で入力してください。');
} else {
$this->validate[$mailField['field_name']] = $mailField['valid'];
}
}
// ### 拡張バリデーション
if ($mailField['valid_ex'] && !empty($mailField['use_field'])) {
$valids = explode(',', $mailField['valid_ex']);
foreach ($valids as $valid) {
$options = explode('|', $mailField['options']);
$options = call_user_func_array('aa', $options);
switch ($valid) {
case 'VALID_MAX_FILE_SIZE':
if (!empty($options['maxFileSize'])) {
$this->validate[$mailField['field_name']]['fileSize'] = array('rule' => array('fileSize', $options['maxFileSize'] * 1000 * 1000), 'message' => 'ファイルサイズがオーバーしています。' . $options['maxFileSize'] . 'MB以内のファイルをご利用ください。');
}
break;
case 'VALID_FILE_EXT':
if (!empty($options['fileExt'])) {
$this->validate[$mailField['field_name']]['fileExt'] = array('rule' => array('fileExt', $options['fileExt']), 'message' => 'ファイル形式が不正です。');
}
break;
}
}
}
}
}