Php 无法在codeigniter的另一个视图中定义的视图中包含变量

Php 无法在codeigniter的另一个视图中定义的视图中包含变量,php,codeigniter,Php,Codeigniter,我创建了一个视图form_variables.php,其中包含在单个文件中定义的所有表单输入变量。因此,每当我需要创建输入字段时,我只需包含form_variables文件,然后使用form_variables.php中定义的form输入变量 下面是它包含的内容 <?php $email = array( 'name' => 'u_email', 'type' => 'text', 'maxlength' => '50', 'class'

我创建了一个视图form_variables.php,其中包含在单个文件中定义的所有表单输入变量。因此,每当我需要创建输入字段时,我只需包含form_variables文件,然后使用form_variables.php中定义的form输入变量

下面是它包含的内容

<?php 
$email = array(
    'name' => 'u_email',
    'type' => 'text',
    'maxlength' => '50',
    'class' => 'form-control',
    'value' => set_value('e_email'),
    'placeholder' => "Enter your Email Address"
    );

$pwd = array(
    'name' => 'u_pwd',
    'type' => 'password',
    'maxlength' => '50',
    'class' => 'form-control',
    'id' => 'pwd',
    'placeholder' => "Enter your Password"
    ); ?>

现在我有了另一个包含表单的视图

<?php echo $this->load->view('includes/form_variables'); ?>
<div class="form-group">
    <?php echo form_input($email); ?>
</div>


它仍然表示$email变量未定义。尽管它加载了form_variables.php文件。请提供帮助。

不要为此使用视图。尝试使用控制器

Class form_variables extends CI_Controller
{ 
    function get_email_field()
    {         
        return array(
                   'name' => 'u_email',
                      'type' => 'text',
                     'maxlength' => '50',
                      'class' => 'form-control',
                     'value' => set_value('e_email'),
                    'placeholder' => "Enter your Email Address"
                  );
    }

    function get_password_field()
    {         
         return array(
                 'name' => 'u_pwd',
                 'type' => 'password',
                  'maxlength' => '50',
                  'class' => 'form-control',
                  'id' => 'pwd',
                  'placeholder' => "Enter your Password"
              );
    }
}
现在在另一个控制器中调用此控制器

       $this->load->library('../controllers/form_variables');
       // use your function 
      $email_field =  $this->form_variables->get_email_field();
      $pass_field =   $this->form_variables->get_password_field();

我希望这对你有用

我有一个更好的解决方案,这将解决您的问题,您也可以创建一个动态字段:

第一步: 在
/helpers
中创建一个
common\u helper.php
函数。 并在其中放置以下代码

if (!function_exists('get_field')) {
function get_field($field, $data = array()) {
    switch ($field) {
        case "email":
            return array(
                'name' => 'u_email',
                'type' => 'text',
                'maxlength' => '50',
                'class' => 'form-control',
                'value' => set_value('e_email'),
                'placeholder' => "Enter your Email Address",
            );

            break;
        case "password":
            return array(
                'name' => 'u_pwd',
                'type' => 'password',
                'maxlength' => '50',
                'class' => 'form-control',
                'id' => 'pwd',
                'placeholder' => "Enter your Password",
            );
            break;
        case "custom":
            if (count($data)) {
                $placeholder = (isset($data['placeholder'])) ? $data['placeholder'] : 'Enter you text here';
                $length = (isset($data['length'])) ? $data['length'] : '50';
                $id = (isset($data['id'])) ? $data['id'] : '';
                return array(
                    'name' => $data['fieldName'],
                    'type' => 'text',
                    'maxlength' => $length,
                    'id' => $id,
                    'class' => 'form-control',
                    'placeholder' => $placeholder,
                );
            }
            break;
        default:
            return array(
                'name' => 'textfiled',
                'type' => 'text',
                'maxlength' => '50',
                'class' => 'form-control',
                'placeholder' => "Enter your text",
            );
    }
  }
}
第二步: 在
config/autoload
中自动加载它

需要时,只需将定义的字段名传递给函数,例如

获取字段(“密码”)

在您的情况下

如果您想创建一个动态字段,只需传递以下信息:

$fieldOpt=array(
  'fieldName' => 'username',
   //optional
  'placeholder' => "Enter your username here", 
  'id'=>'myidfield',
  'length'=>'60',
);    
<?php echo form_input(get_field('custom', $fieldOpt);?>
$fieldOpt=array(
“fieldName”=>“username”,
//可选的
'占位符'=>“在此处输入您的用户名”,
'id'=>'myidfield',
“长度”=>“60”,
);    

这是个好主意,我很感激,Thanx。但是我们可以在控制器中定义这些数组,然后简单地调用这些变量吗?非常合理的做法是扩展form helper,或者使用这些函数创建一个新的可以在整个应用程序中调用的数组。这是一个更好的主意。Thanx@tpojkatis也非常有用。塔克斯