Changeset 23567
- Timestamp:
- 2014/07/10 00:15:52 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_13-dev/data/class/SC_FormParam.php
r23565 r23567 231 231 case 'NUM_POINT_CHECK': 232 232 $this->recursionCheck($this->disp_name[$index], $func, 233 $value, $arrErr, $key, $this->length[$index]); 233 $value, $arrErr[$key], $this->length[$index]); 234 if (SC_Utils_Ex::isBlank($arrErr[$key])) { 235 unset($arrErr[$key]); 236 } 234 237 break; 235 238 // 小文字に変換 … … 268 271 * 再帰実行した場合は, エラーメッセージを多次元配列で格納する 269 272 * 270 * TODO 二次元以上のエラーメッセージへの対応 271 * 272 * @param string $disp_name 表示名 273 * @param string $func チェック種別 274 * @param mixed $value チェック対象の値. 配列の場合は再帰的にチェックする. 275 * @param array $arrErr エラーメッセージを格納する配列 276 * @param string $error_key エラーメッセージを格納する配列のキー 277 * @param integer $length チェック対象の値の長さ 278 * @param integer $depth 再帰実行した場合の深度 279 * @param integer $error_last_key エラーメッセージを格納する配列の末端のキー 273 * @param string $disp_name 表示名 274 * @param string $func チェック種別 275 * @param mixed $value チェック対象の値 276 * 配列の場合は再帰的にチェックする 277 * @param array $arrErr エラーメッセージを格納する配列(の一部) 278 * @param integer $length チェック対象の値の長さ 280 279 * @return void 281 280 */ 282 public function recursionCheck($disp_name, $func, $value, &$arrErr, $error_key,283 $length = 0 , $depth = 0, $error_last_key = null281 public function recursionCheck($disp_name, $func, $value, &$arrErr, 282 $length = 0 284 283 ) { 284 // 配列の場合は、再帰実行 285 285 if (is_array($value)) { 286 $depth++;287 286 foreach ($value as $key => $in) { 288 $this->recursionCheck($disp_name, $func, $in, $arrErr, $error_key, 289 $length, $depth, $key); 290 } 291 } else { 292 $objErr = new SC_CheckError_Ex(array(($error_last_key ? $error_last_key : $error_key) => $value)); 293 $objErr->doFunc(array($disp_name, ($error_last_key ? $error_last_key : $error_key), $length), array($func)); 294 if (!SC_Utils_Ex::isBlank($objErr->arrErr)) { 295 foreach ($objErr->arrErr as $message) { 296 if (!SC_Utils_Ex::isBlank($message)) { 297 // 再帰した場合は多次元配列のエラーメッセージを生成 298 $error_var = '$arrErr[$error_key]'; 299 for ($i = 0; $i < $depth; $i++) { 300 // FIXME 二次元以上の対応 301 $error_var .= '[' . $error_last_key . ']'; 302 } 303 eval($error_var . ' = $message;'); 304 } 305 } 306 } 287 $this->recursionCheck($disp_name, $func, $in, $arrErr[$key], 288 $length); 289 if (SC_Utils_Ex::isBlank($arrErr[$key])) { 290 unset($arrErr[$key]); 291 } 292 } 293 return; 294 } 295 296 $dummy_key = 'dummy'; // 仮のキーを指定。どんな値でも良い。 297 $objErr = new SC_CheckError_Ex(array($dummy_key => $value)); 298 $objErr->doFunc(array($disp_name, $dummy_key, $length), array($func)); 299 if (!SC_Utils_Ex::isBlank($objErr->arrErr[$dummy_key])) { 300 $arrErr = $objErr->arrErr[$dummy_key]; 307 301 } 308 302 }
Note: See TracChangeset
for help on using the changeset viewer.