Codeigniter - 将复杂的IF语句移出View

时间:2012-09-28 10:36:02

标签: php codeigniter

我目前正在开展一个项目,这意味着我正在处理大量的日期,我有一个视图,用户可以在下一周查看各种事件的概述。

该视图显示多个帐户的多个事件。

我面临的问题是我的视图有一些非常复杂的IF语句(检查当前日期,检查事件日期,检查事件的帐户ID等)并且它开始看起来很乱,我确定它可以更简单/更简化!

我如何将IF语句移动到控制器?

我尝试查找CI的最佳做法但没有任何用处。

任何见解都会受到高度赞赏!

1 个答案:

答案 0 :(得分:1)

我将有一个单独的功能(在控制器或库中)用于准备数据。这个函数只需返回一个数组,这样就可以在HTML中构造数据而无需进行所有条件检查。

这是一个数据准备库的示例,它不仅可以工作,因此您需要创建一个完整的库,它只是为了给您一个大致的想法。

<?php
class prepare {
    function prep_page_data($page_id) {

        $output = array();

        $query = $this->ci->db->get_where("page_data", array("page_id" => $page_id));

        foreach($query->result_array() as $row) {
            $output = $row;
            //complete all addtional checks below
            if($row['datetime'] < date("Y-m-d 00:00:00")) {
                $output['archive'] = "old"
            }
            else {
                $output['archive'] = "new";
            }
            //you can add as many conditions as you like to complete the data collection.
        }

        return $output;

    }
}

?>