PHPで(生のphp MCVフレームワークを介して)単純な検証フォームシステムを作成していますが、修正できない問題があります
私はこのコードを持っています
$credentials = array('name' => 'required', 'password' => 'required|between');
$validator = new Validation;
if (!$validator->check($credentials, array(5, 10))) Redirect::to('/login', 'error', $validator->msg);
次に、私のクラスキャリデータは次のようになります
public function check($fields, $size)
{
foreach ($fields as $key => $val)
{
$rule = explode('|', $val);
if (in_array('required', $rule))
{
if (empty($_POST[$key]))
{
$this->msg = 'Field '.$key.' is required';
$this->final = false;
}
}
elseif (in_array('between', $rule))
{
if (strlen($_POST[$key]) < $size[0])
{
$this->msg = 'Filed '.$key.' must be between '.$size[0].' and '.$size[1].' chars';
$this->final = false;
}
if (strlen($_POST[$key]) > $size[1])
{
$this->msg = 'Filed '.$key.' must be between '.$size[0].' and '.$size[1].' chars';
$this->final = false;
}
}
}
if (!$final)
{
return false;
}
else
{
return true;
}
}
問題は、このように配列を送信すると(ルールが1つだけの場合)
$credentials = array('name' => 'required', 'password' => 'between');
それは正常に動作しますが、さらにルールを追加すると (required| between ...)、私の関数は最初のルールで機能するため、この場合は between ルールは無視されます...