teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

詳細の追加

2018/06/13 10:36

投稿

GrayWingAliance
GrayWingAliance

スコア218

title CHANGED
File without changes
body CHANGED
@@ -41,7 +41,9 @@
41
41
  ```
42
42
 
43
43
  という形で、バリデーションを行っているのですが、
44
- エラーの中に使えない文字を実際に表示したいです。
44
+ エラーの中に使えない文字を表示したいです。
45
45
 
46
+ ちなみにgetMessageCSVはmessageオブジェクトの中の指定した文字列から特定の文字列({param1}のような)を探し、置換してくれるメソッドです。(E023がエラー番号となり、”{param1}では指定された文字は使えません。)のようにメッセージを表示します。
47
+
46
48
  global変数を使用するsessionにキーを持たせるなどを考えたのですが、どうもいい方法に思えません。
47
49
  何か良い方法がないでしょうか?

1

コードのインデントの修正

2018/06/13 10:36

投稿

GrayWingAliance
GrayWingAliance

スコア218

title CHANGED
File without changes
body CHANGED
@@ -2,42 +2,42 @@
2
2
 
3
3
  CakePHPにおいて
4
4
  ``` php
5
-
6
- $validator->add($field,
5
+ $validator->add($field,
7
- 'custom',
6
+ 'custom',
8
- [
7
+ [
9
- 'rule' => function($field){
8
+ 'rule' => function($field){
10
- $utf8CharsArray = preg_split('//u', $field, -1, PREG_SPLIT_NO_EMPTY);
9
+ $utf8CharsArray = preg_split('//u', $field, -1, PREG_SPLIT_NO_EMPTY);
11
- $sjisCharsArray = $utf8CharsArray;
10
+ $sjisCharsArray = $utf8CharsArray;
12
- mb_convert_variables('SJIS', 'UTF-8', $sjisCharsArray);
11
+ mb_convert_variables('SJIS', 'UTF-8', $sjisCharsArray);
13
- $utf8CharsArrayEscaped = array_map(function($sjisChar, $utf8Char){
12
+ $utf8CharsArrayEscaped = array_map(function($sjisChar, $utf8Char){
14
- // 元から"?"のものを除き、JISになく使用できない文字
13
+ // 元から"?"のものを除き、JISになく使用できない文字
15
- if ($sjisChar === '?' && $utf8Char !== '?'){
14
+ if ($sjisChar === '?' && $utf8Char !== '?'){
16
- return "false";
15
+ return "false";
17
- }else {
16
+ }else {
18
- if(preg_match("/^[俱-剝????-吞噓-繫????-㒒儈-????宖-幭幮-殁殛-????']$/", $sjisChar)){ //JISの中で第三水準・第四水準及び「'」を除く
17
+ if(preg_match("/^[俱-剝????-吞噓-繫????-㒒儈-????宖-幭幮-殁殛-????']$/", $sjisChar)){
18
+ //JISの中で第三水準・第四水準及び「'」を除く
19
- return "false";
19
+ return "false";
20
- }else { //そのほかは使える
20
+ }else { //そのほかは使える
21
- return $sjisChar;
21
+ return $sjisChar;
22
- }
22
+ }
23
- }
23
+ }
24
- }, $sjisCharsArray, $utf8CharsArray);
24
+ }, $sjisCharsArray, $utf8CharsArray);
25
- $arraySearchResult = array_search("false", $utf8CharsArrayEscaped, true);
25
+ $arraySearchResult = array_search("false", $utf8CharsArrayEscaped, true);
26
- if(is_int($arraySearchResult)){
26
+ if(is_int($arraySearchResult)){
27
- echo "false";
27
+ echo "false";
28
- return false;
28
+ return false;
29
- }else if(!$arraySearchResult){
29
+ }else if(!$arraySearchResult){
30
- echo "true";
30
+ echo "true";
31
- return true;
31
+ return true;
32
- }else {
32
+ }else {
33
- return false;
33
+ return false;
34
- }
34
+ }
35
- },
35
+ },
36
- 'message' => $message->getMessageCSV(
36
+ 'message' => $message->getMessageCSV(
37
- $count, "E023",
37
+ $count, "E023",
38
- $value['attribute']['params']
38
+ $value['attribute']['params']
39
- )
39
+ )
40
- ]);
40
+ ]);
41
41
  ```
42
42
 
43
43
  という形で、バリデーションを行っているのですが、