Php 无法在codeigniter的另一个视图中定义的视图中包含变量
我创建了一个视图form_variables.php,其中包含在单个文件中定义的所有表单输入变量。因此,每当我需要创建输入字段时,我只需包含form_variables文件,然后使用form_variables.php中定义的form输入变量 下面是它包含的内容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'
<?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也非常有用。塔克斯