Использование foreach в Контроллере и использование вывода его в представлении - PullRequest
2 голосов
/ 15 сентября 2011

Я использую codeigniter.Как поместить foreach в контроллер и использовать только вывод его в представлении (я не хочу помещать foreach в представлении)?

foreach ($output->result() as $row)
{
    echo '<option>'.$row->name.'</option>';
}

Это мое представление сейчас:

<select>
<option disabled="disabled" value="">selected</option>
<?php 
foreach ($output->result() as $row) { 
   echo '<option>'.$row->name.'</option>'; 
} 
?>
</select>

Я хочу это в представлении:

<select>
<option disabled="disabled" value="">selected</option>
<?php 
    echo $output_foreach_from_Controller; 
?>

Ответы [ 4 ]

1 голос
/ 16 сентября 2011

Может быть, вы можете использовать form_dropdown form_helper. Смотри: http://codeigniter.com/user_guide/helpers/form_helper.html Я надеюсь, что это поможет вам.

1 голос
/ 15 сентября 2011

Хотя логика хочет, чтобы foreach находился внутри представления (в конце концов, это вещь для представления, и Контроллеры не должны выполнять какие-либо манипуляции с данными. Поскольку вы используете метод db Вы можете добавить это в модель, хотя тоже «логически» ошибочны ...)

В любом случае, переходя к вашему вопросу ... Вы можете присвоить его переменной и передать его в представление:

В контроллере:

function whatever()
{
$string = '';

foreach ($output->result() as $row) { 
   $string .= '<option>'.$row->name.'</option>'; 
} 

$data['foreach_output'] = $string;

$this->load->view('viewfile',$data);
}

в поле зрения:

<select>
<?php echo $foreach_output;?>
</select>
0 голосов
/ 15 сентября 2011

Я думаю, что вы действительно должны поставить foreach в поле зрения.Вы также можете использовать шаблонную версию foreach, чтобы она выглядела лучше:

<select>
    <option disabled="disabled" value="">selected</option>
    <?php foreach ($output->result() as $row): ?>
    <option><?php echo $row->name.; ?></option>
    <?php endforeach; ?> 
</select>

Причина этого в том, что если вы генерируете HTML в контроллере, не сразу видно, что выводится.

0 голосов
/ 15 сентября 2011

Я думаю, что в контроллере вы можете присвоить значение ... переменной, а затем передать эту переменную в представление. Смотрите что-то вроде приведенного ниже:

<?php 

$variable = "";

foreach ($output->result() as $row) {
   $variable = $variable . '<option>'.$row->name.'</option>';
}

$data["option_values"] = $variable;

$this->load->view('view-name', $data);

?>



А затем отобразите переменную «$ option_values» в представлении, в котором вы хотите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...