CodeIgniter表单验证多语言标签

Cri*_*ane 0 validation multilingual codeigniter

我目前正在开发一个可以用3种不同语言查看的网站.我已将所有文本放入语言文件中,几乎所有内容都按预期工作.像分配配置这样的东西我已经放入配置文件并进入application/config,如下所示:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

$config['num_links']      = 2;
$config['full_tag_open']  = '<p class="pagination">';
$config['full_tag_close'] = '</p>';
$config['first_link']     = '&laquo;&nbsp;' . lang('first');
$config['last_link']      = lang('last') . '&nbsp;&raquo;';
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但我已经尝试了相同的表单验证配置文件,如下所示:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

$config = array(

    'login' => array(
        array(
            'field' => 'login_email',
            'label' => lang('emailaddress'),
            'rules' => 'trim|required|valid_email|min_length[6]'
        ),
        array(
            'field' => 'login_password',
            'label' => lang('password'),
            'rules' => 'trim|required'
        ),
    ),
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.看起来这个配置文件在语言文件/库之前加载.说实话,目前我并不知道如何解决这个问题,除了再次从配置文件中取出所有内容,并将其放入控制器,但我宁愿不这样做.

任何想法如何解决这一问题?

小智 5

如果您在定义表单验证规则时检查字段转换是如何完成的(请参阅下面的示例并考虑第二个参数):

$this->form_validation->set_rules('first_name', 'lang:first_name', 'required');
Run Code Online (Sandbox Code Playgroud)

你可以在实际的代码中看到你在哪里做错了.代替:

array(
    'field' => 'login_password',
    'label' => lang('password'),
    'rules' => 'trim|required'
),
Run Code Online (Sandbox Code Playgroud)

要走的路是:

 array(
    'field' => 'login_password',
    'label' => 'lang:password',
    'rules' => 'trim|required'
),
Run Code Online (Sandbox Code Playgroud)