忘れないように記録しとこ

カバの樹

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に設置してやれば・・・

上手くいきます!

今日はこの辺で!

  • B!