2015-06-17 5 views
4

Я создал представление form_variables.php, которое содержит все входные переменные формы, определенные в одном файле. Поэтому, когда мне нужно создать поле ввода, я бы просто включил файл form_variables, а затем использовал входные переменные формы, определенные в form_variables.phpНевозможно включить переменные в представление, которое было определено в другом представлении в codeigniter

Вот что он содержит.

<?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. Пожалуйста помоги.

ответ

1

У меня есть лучшее решение для этого, это будет решать ваша проблема, а также вы также можете создать динамическое поле:

1-й шаг: создать функцию common_helper.php в /helpers. и поместите в него следующий код.

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.

, когда вам это нужно, просто передайте свое определенное имя поля функции, например.

get_field('password'),
в вашем случае
<?php echo form_input(get_field('password')); ?>
, и если вы хотите создать динамическое поле только Зачет следующее:

$fieldOpt=array(
    'fieldName' => 'username', 
    //optional 
    'placeholder' => "Enter your username here", 
    'id'=>'myidfield', 
    'length'=>'60', 
);  
<?php echo form_input(get_field('custom', $fieldOpt);?> 

надеюсь, что это поможет вам.

+0

Это тоже очень полезно. Thanx – cyberrspiritt

3

Вместо того чтобы использовать для этой цели. попробуйте использовать контроллер

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(); 

Я надеюсь, что это будет работать для вас ..

+0

Это хорошая идея, я ценю это, Thanx. Но можем ли мы определить эти массивы в этом контроллере, а затем просто вызвать эти переменные? – cyberrspiritt

+0

Очень разумно было бы распространять хелпер или создавать новые с теми функциями, которые можно вызвать из приложения. – Tpojka

+0

Это еще лучшая идея. Thanx @Tpojka – cyberrspiritt

Смежные вопросы