Codeiginterの バリデーション callback関数でエラーが発生した

動作環境

Codeigniter: 3.1.4
PHP: 7.0.4

久々のCodeigniterでエラー

最近めっきり触らなくなって居たCodeigniterさん。
メインで使ってるフレームワークなのに、他の案件がオオイヨー。

で、久々にお問い合わせフォームで、バリデーションにcallback関数を作ったら下記のようなエラーがでました。


Unable to access an error message corresponding to your filed name 店コード.(custom_uniq_id)

えーと、エラーから察するに「店コード」の入力欄に「custom_uniq_id」なんていうバリデーションエラーはないぞ、ということですかね。
ソースコードは下記になります。


public function get_validate_rule()
{

~~~~~~~~

array(
	'field'   => 'input_shopNo',
	'label'   => '店コード',
	'rules'   => 'trim|required|is_natural|callback_custom_uniq_id|xss_clean|encode_php_tags')

~~~~~~~~

}

public function custom_uniq_id($str)
{
  if($this-.>shopNo === 0 || $this->shopNo != $str)
  {
    $item = $this->shop->get_item(array('shopNo' => $str));

    if(!empty($item['shopNo']))
    {
      $this->form_validation->set_message('custom_uniq_id', 'その店舗番号は使用済みです。');
      return FALSE;
    }
  }

  return TRUE;
}

model内にバリデーションの設定と、callback関数を格納しています。
しかし、これだと上のようなエラーが出てしまいます。

対応

今回問題となっていたのは、model内にcallback関数を格納していることでした。

なので、callback関数をcontrollersに設置してやれば・・・

上手くいきます!

今日はこの辺で!

  • この記事を書いた人

カバノキ

印刷会社のWEB部隊に所属してます。 WEB制作に携わってから、もう時期10年になります。 普段の業務では、PHPをメインにサーバーサイドの言語を扱っています。 最近のお気に入りはJavascriptです。 Vue.jsを狂喜乱舞しながら、社内に布教中です。

-CodeIgniter
-,