我使用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;
?>
尽管逻辑希望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>
也许你可以使用'form_dropdown' form_helper。参见:http://codeigniter.com/user_guide/helpers/form_helper.html我希望这对你有帮助。
我认为在控制器中你可以分配值…到一个变量,然后将该变量传递给视图。看看下面给出的东西:
<?php
$variable = "";
foreach ($output->result() as $row) {
$variable = $variable . '<option>'.$row->name.'</option>';
}
$data["option_values"] = $variable;
$this->load->view('view-name', $data);
?>
然后在你想要
我认为你应该把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,输出的内容不会立即明显。