codeigniter中的自定义表单验证无效

时间:2018-04-25 09:45:56

标签: php forms codeigniter validation

我有一个页面包含一些验证检查。

$this->form_validation->set_rules('category', 'categorie', 'required_fr');
$this->form_validation->set_rules('description', 'omschrijving', 'required');

我的form_validation_lang.php文件如下所示:

$lang['required'] = 'Error message 1';
$lang['required_fr'] = 'Error message 2';

要求是标准值,我已添加required_fr。如果两个验证检查都失败,我只会收到错误消息1'。第二项检查(required_fr)无效。

如果我修改了“必需的”' form_validation_lang.php文件中的值,当表单验证失败时,错误消息也会更改。但是' required_fr'价值显然无法加载。

我也尝试过

$this->form_validation->set_message('required_fr', 'Error Message 2');

在我的功能中,但它也不起作用。 解决方案可能很简单,但我认为我忽视了一些事情。

我页面的重要部分如下所示

<?php echo validation_errors(); ?>

        <div class="form-group">
            <label for="ticketCategory" class="col-sm-2 control-label"><?php echo ($this->session->userdata('franstalig') == 0) ? "Categorie" : "Catégorie" ?></label>
            <div class="col-sm-6">
                <select class="form-control" id="ticketCategory" name="category">
                    <option value="">Gelieve een categorie te selecteren</option>
                    <?php if (isset($categories) && !empty($categories)): ?>
                        <?php foreach ($categories as $category): ?>
                            <option value="<?php echo $category['id'] ?>" <?php echo set_select('category', $category['id']); ?>><?php echo $category['description']; ?></option>
                        <?php endforeach; ?>
                    <?php endif; ?>
                </select>
            </div>
        </div>
        <div class="form-group">
            <label for="ticketDesc" class="col-sm-2 control-label">Omschrijving</label>
            <div class="col-sm-6">
                <textarea name="description" id="ticketDesc" class="form-control" rows="16"><?php echo set_value('description'); ?></textarea>
            </div>
        </div>

validation_errors()函数有问题吗?

2 个答案:

答案 0 :(得分:0)

替代方式。

尝试更改:

$this->form_validation->set_rules('category', 'categorie', 'required_fr');

$this->lang->load('form_validation_lang');
$this->form_validation->set_rules('category', 'categorie', 'required', array('required' => $this->lang->line('required_fr')));

答案 1 :(得分:0)

我解决了这个问题。我添加了

public function required_fr($str) 
{
    if ( ! is_array($str))
    {
        return (trim($str) == '') ? FALSE : TRUE;
    }
    else
    {
        return ( ! empty($str));
    }
} 

到我班上,并打电话给$this->form_validation->set_rules('category', 'categorie', 'callback_required_fr');。 这就行了。