我使用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;
?>
答案 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,那么输出的内容并不是很明显。