【发布时间】:2011-05-19 13:33:55
【问题描述】:
让我们参考 Yelp 上的“Sort by”部分:
我有 3 个生成 3 个链接的 anchor() 函数。 When one of the 'sort by' option is selected, I want to remove the hyperlink/anchor() and bold it to show that it is selected just like on the page above.
现在我正在考虑对 $arr 执行 uri_to_assoc(),因为所选选项将在 url 中,例如 controller/function/sort_by/best_reviews/..,然后基于什么是关键 (best_reviews) 或元素(sort_by),在 view
中使用以下代码<?php
$arr = uri_to_assoc(3);
if($arr['sort_by'] == 'best_reviews') {
echo "<strong>Best Reviews</strong>";
} else {
anchor('controller/function/sort_by/best_reviews', 'Best Reviews');
]
?>
现在我相信 MVC 的想法是在视图中保留少量 php 代码(逻辑代码?)。在这种情况下,您是将上面的代码放在视图中,还是将逻辑放在控制器/模型中,然后传递最终代码以在数组中显示(回显或锚()),然后在视图中回显数组? .
.
小问题 (PHP)
如果在url中不存在/sort_by/variable的情况下没有定义$arr['sort_by'],语句if($arr['sort_by'] == 'best_reviews')会报错.你会将上述所有代码嵌套在 if(isset($arr['sort_by'])){} 中吗?
【问题讨论】:
-
关于小问题 - 在将
$arr传递给视图之前,我可能会强制$arr['sort_by']存在(通过将其设置为某个默认值)。 -
$arr['sort_by'] 如果 ..../sort_by/variable..... 存在于 url 中,则从 url 中检索。就像使用查询字符串 ?sort_by=variable 但在 Codeigniter 的情况下,它在 url 中的形式为 /sort_by/variable。使用 isset() 是一种不好的编码方式吗?
-
不,使用
isset()还不错。但是如果没有指定,你不需要任何默认排序吗? -
不需要默认排序。 url 成对转换为元素键和值 /key1/value1/key2/value2
标签: php model-view-controller codeigniter