在Controller中使用foreach并在视图中使用输出

时间:2011-09-15 11:21:17

标签: php codeigniter

我使用codeigniter。如何将foreach放在Controller中并仅使用在视图中输出它。(我不想在视图中放置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 个答案:

答案 0 :(得分:1)

虽然逻辑希望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>

答案 1 :(得分:1)

也许你可以使用'form_dropdown'form_helper。 请参阅:http://codeigniter.com/user_guide/helpers/form_helper.html 我希望对你有所帮助。

答案 2 :(得分:0)

我认为在控制器中你可以将值赋值给变量然后将该变量传递给视图。看下面给出的东西:

<?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”变量

答案 3 :(得分:0)

我认为你应该把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,那么输出的内容并不是很明显。