CodeIgniter3 Form_validationクラス入力項目が配列時のエラーメッセージ対応

3のForm_validationクラスが配列入力値のバリデーションには対応しているが、エラーメッセージは対応していない。

表形式の入力フォームで、1列目がテキスト1、2列がテキスト2と2行以上あるフォームでは、2行目でバリデーションエラーとなろうが1行目でバリデーションエラーとなろうがエラーメッセージは、同一のメッセージが1つ表示されるのみである。何行目というのはエラーメッセージには出力されない。

今回CSVでデータ登録する機能が必要で、エラーメッセージに何行目であるかを表示する必要があったため、Form_validationクラスの_executeメソッドを改良した。

MY_Form_validationクラスを作成

system/libraries/Form_validation.phpから_executeメソッドをコピー

_executeメソッドの第4引数の$cyclesが入力項目が配列時にインデックス番号が入るものなのでこれを利用してエラーメッセージに行番号を付加することにする。

2016/09/15 追記 3.0.6 の「_execute」メソッドを変更しています。3.1.0 でも動作することは確認しました。
3.1.0 の「_execute」メソッドについては下に載せました。

変更点

29~32行
行番号を付加するメッセージ変数を設定するのを追加

88行
エラーメッセージに行番号変数を付加

92~93行
エラーメッセージ配列変数に同一のエラーメッセージ文字列があれば、行番号変数を付加
これは、複数行にわたってエラーがある場合に「1行目,2行目」とエラー箇所を表すためです。

175~180行
独自バリデーションのコールバック関数呼び出し時におけるエラーメッセージ対応
コールバック関数を作成する場合は、第3引数を配列のindex値としている。

278行
エラーメッセージに行番号変数を付加

283~285行
エラーメッセージ配列変数に同一のエラーメッセージ文字列があれば、行番号変数を付加
これは、複数行にわたってエラーがある場合に「1行目,2行目」とエラー箇所を表すためです。

これで、エラーメッセージに行番号が付加されることとなります。
入力要素が配列では無い場合は、通常通りのエラーメッセージが表示されます。

こんな方法で対応はしたけど、他にあるのだろうか。
ただ、入力要素が配列のバリデーションに対応しているんだから、エラーメッセージも標準対応できないものだろうかと思う。

3.1.0の_excuteメソッド

29~32行
行番号を付加するメッセージ変数を設定するのを追加

119~124行目
独自バリデーションのコールバック関数呼び出し時におけるエラーメッセージ対応
コールバック関数を作成する場合は、第3引数を配列のindex値としている。

216~223行目
エラーメッセージ配列変数に同一のエラーメッセージ文字列があれば、行番号変数を付加
これは、複数行にわたってエラーがある場合に「1行目,2行目」とエラー箇所を表すためです。

あとForm_validationにほしいのは1つの項目に対する複数のエラーメッセージ表示かぁ
需要ないのかのぉ