编码器点火器中的多选下拉验证



我正在尝试在 Codeigniter 中验证多选下拉表单验证,并且我正在使用自定义验证回调方法进行验证。 我尝试了几个StackOverflow答案,但没有一个对我有用。我错过了什么吗?

这是我的视图代码。

<?php echo form_open_multipart('Register/user_register') ?>
    	<div class="form-group">
				<label for="musicGen">Select Your Music Genre</label>
				<?php echo form_error('musicGen'); ?>
				<select class="form-control" name="musicGen[]" multiple="multiple" id="musicGen">
					<?php
					foreach ($genre as $row) {
						echo '<option class="form-control" value="' . $row->genreId . '">' . $row->genreName . '</option>';
					}
					?>
				</select>
			</div>
<?php echo form_close() ?>

这是我的控制器。

$this->form_validation->set_rules('musicGen', 'Music Genre', 'required|callback_multiple_select');
public function multiple_select()
	{
		$music_genre = $this->input->post('musicGen');
		if (is_null($music_genre)) {
			$this->form_validation->set_message('multiple_select', 'Select at least one Music Genre');
			return false;
		} else {
			return true;
		}
	}

无需使用回调函数,除非您希望用户选择多个选项。 您可以在代码中使用以下代码

if (empty($_POST['musicGen'])) {
      $this->form_validation->set_rules('musicGen', 'Music Genre', 'required',array('required' =>'Select at least one Music Genre'));
   }

您有两种可能性可以解决此问题:

仅使用验证规则">必需",为此您不能索引输入字段的名称,请将其更改为 name="musicGen"':

<select class="form-control" name="musicGen" multiple="multiple" id="musicGen">

$this->form_validation->set_rules('musicGen', 'Music Genre', 'required'); 

或者,将回调函数">multiple_select"与索引名称字段一起使用。这更有意义,因为您的回调要求至少选择一个选项(与is_null一起检查( 您可能还想检查选择了多个选项,请使用计数执行此操作

<select class="form-control" name="musicGen[]" multiple="multiple" id="musicGen">

并将验证规则更改为:

$this->form_validation->set_rules('musicGen', 'Music Genre', 'callback_multiple_select');
public function multiple_select()
{
    $music_genre = $this->input->post('musicGen');
    if (count($music_genre)<2) {
        $this->form_validation->set_message('multiple_select', 'Select at least two Music Genre');
        return false;
    } else {
        return true;
    }
}

相关内容

  • 没有找到相关文章

最新更新