2017-10-01 5 views
0

Je ne fais que commencer avec CodeIgniter et je ne peux pas afficher la valeur de mon entrée_formulaire. Voici mon code:Codeigniter 3: foreach inside form_input

<?= form_input('gender','','type="text" class="form-control form-input" value="'.foreach($profile as $prof){echo $prof->gender;}.'" disabled id="name" style="cursor:default"');?> 

Ma syntaxe est-elle correcte?

Répondre

3

Non, votre syntaxe est incorrecte. Vos arguments à form_input sont farfelus et, comme vous l'avez, un seul champ de saisie est créé. La "valeur" de cette entrée peut être quelque chose comme

value='malefemalefemalemalemalemalsemalefemale', 

Assurez-vous que ce n'est pas ce que vous voulez.

En fait, à partir du code que vous publiez, il est difficile de savoir ce que vous voulez. Je devine est ce

<?php 
//create an array with attribute values that don't change 
$attributes = [ 
    'class' => "form-control form-input", 
    'style' => "cursor:default", 
]; 

//create a counter 
$i = 0; 

foreach($profile as $prof) 
{ 
    //inputs need a unique "name" and "id", use the counter for that purpose 
    $attributes['name'] = 'gender'.$i; 
    $attributes['id'] = "name".$i; 
    //add the 'value' of each profile to the array  
    $attributes['value'] = $prof->gender; 
    //send the array to form_input 
    echo form_input($attributes, NULL, 'disabled'); 
    echo "<br>"; //new line 
    $i++; //increase value of counter by one for next loop run 
} 

Ce qui précède produira un champ de texte (chacun sur une ligne distincte) pour chaque profil.

Documentation sur `form_input'.

Le "nom" des entrées sera "gender0", "gender1", etc., ce qui fonctionnera. Ce n'est pas la seule façon de le faire. Vous pouvez également utiliser des tableaux d'entrée. Cette syntaxe est name='gender[]'. L'une ou l'autre approche fonctionnera pour le "nom" mais elle ne fonctionnera pas pour les attributs "id" qui doivent être uniques.