0

構成ファイルに次の配列を取得しました。

$config['reg_datas'] = array(
    'high' => array(
        7  => 200,
        30 => 500
    ),
    'box' => array(
        7   => 125,
        30  => 350
    ),
    'shots' => array(
        7   => 25,
        30  => 50
    )
);

したがって、CI のマニュアルを参照すると、この検証ルールを使用してフォーム データを検証してcallback__validate_highいます: ... そして、このコールバック関数を使用する必要があります。

public function _validate_high($input)
{
    $cfg = $this->config->item('reg_datas');
    if ( !array_key_exists($cfg['high'], $input)
    {
        $this->form_validation->set_message('_validate_high', 'Invalid High Field...');
        return FALSE;
    }

    return TRUE;
}

質問は; 確認する必要があるたびに、新しいコールバックを作成する必要がありますarray_key_existsか? 上記のコードは 1 つの検証ルール (1 つの配列に対する) にすぎませんが、私の構成ファイルには 3 つの配列があります (そして、おそらくすぐにさらにいくつかの配列が追加される予定です)。そのため、このような単純なチェックのために 3 つのコールバック関数を作成する必要があります。

CodeIgniter は私が学習している最初のフレームワークであり、可能な限り最善を尽くして学習したいと考えています。時間を無駄にしたくないので、そのようなことを本当に気にかけています。

4

1 に答える 1

1

まず、構文array_key_exists()が間違っています。キーが最初の属性で、配列が 2 番目です。このように: array_key_exists($input, $cfg['high']);.

そして、検証のために、キーを1つずつチェックするのではなく、共通の関数を作成します。また、構成ファイルにエラーコードを入れます。

$config['reg_datas_error'] = array(
  'high' => 'Invalid High Field',
  'box' => 'Invalid box Field',
  'shots' => 'Invalid Shots Field'
);

そして、あなたの共通の検証機能

public function _validate_field($input, $key)
{
   $cfg = $this->config->item('reg_datas');
   $cfg_error = $this->config->item('reg_datas_error');
   if ( !array_key_exists($input, $cfg[$key])
   {
      $this->form_validation->set_message('_validate_'.$key, $cfg_error[$key]);
      return FALSE;
   }

   return TRUE;
}

これらは単なる例であることに注意してください。改善するか、別の方法を実行してください。一般的な検証を行う方法の主なロジック

于 2012-04-05T05:38:37.097 に答える