php - Codeigniter 中的多选下拉验证
问题描述
我正在尝试在 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'));
}
推荐阅读
- regex - 使用正则表达式在模式内选择模式的每个实例?
- tensorflow - 意外的关键字参数“show_dtype”
- android - Android地理围栏在首次创建时是否会立即检查位置?
- laravel - 如何传递我的变量来查看 laravel
- spring-boot - Spring Boot 中的 BindingResult 参数不起作用
- reactjs - 反应天气应用程序在线时未获取数据
- swift - 您如何使用幻灯片实时更新“吸气剂”
- javascript - 如何在动态字符串的反应js中事件监听器或单击监听器?
- protocol-buffers - Envoy/GRPC 无法解码二进制数据 - 错误的线型
- callback - FusedLocationProvider 在 Worker / CoroutineWorker 中不起作用