STEAM PLACE

エンジニアリングとマネジメント

CakePHP / validate で エラーコードなどを受け取る強引なやり方

タイトルの通り強引なやり方で validate rule ごとの配列(エラーコードなど)を受け取る方法です。公式ドキュメントにも載っていないのですが、一応動作したのでメモメモ。

 messge を配列で受け取る

やり方はいたって簡単で message の中身を配列にするだけです。

 通常の message

通常のサンプルとして以下のようなものがあったとします。

 
public $validate = [
    'name' => [
        'maxLength' => [
            'rule' => ['maxLength', 60],
            'required' => true,
            'allowEmpty' => false,
            'message' => 'タスクを入力してください'
        ],
    ],
];

 配列を書いてみる

下記のように message に配列入れてあげると、 validationErrors などでも配列で受け取ることができます。

 
public $validate = [
    'name' => [
        'maxLength' => [
            'rule' => ['maxLength', 60],
            'required' => true,
            'allowEmpty' => false,
            'message' => [
                'code' => 'E1234',
                'message' => 'タスクを入力してください'
            ],
        ],
    ],
];

 注意

ただし、 FormHelper 側では message の配列が処理されません。
FormHelper を使わないシーンで利用できるとは思いますが、公式なやり方ではないのでご注意ください。