我应该在控制器或视图(CakePHP)中转换我的时间戳吗?

sbu*_*uck 3 model-view-controller cakephp

我正在努力理解MVC的最佳实践(使用CakePHP),并试图了解控制器或视图中是否应该发生某个任务.

这是场景:

我有一个用户表.每个用户都有许多与之关联的事件.

在我的控制器中,我将关于用户的内容加载到一个数组中,如下所示:

$this->set('user', $this->User->read());    
Run Code Online (Sandbox Code Playgroud)

这导致我可以在我的视图页面上循环的用户数组:

Array
(
    [User] => Array
        (
            [id] => 1
            [name] => Jane Doe
            [created] => 2011-03-29 15:50:25
            [modified] => 1301428225
        )

    [Event] => Array
        (
            [0] => Array
                (
                    [id] => 4
                    [user_id] => 1
                    [title] => Birthday
                    [created] => 2011-04-07 17:28:53
                    [modified] => 2011-04-07 17:28:53
                    [occured] => 1301889600
                )

            [1] => Array
                (
                    [id] => 3
                    [user_id] => 1
                    [title] => Anniversary
                    [created] => 2011-04-07 17:21:27
                    [modified] => 2011-04-07 17:21:27
                    [occured] => 1301976000
                )

            [2] => Array
                (
                    [id] => 2
                    [user_id] => 1
                    [title] => Graduation
                    [created] => 2011-04-07 17:20:41
                    [modified] => 2011-04-07 17:20:41
                    [occured] => 1301889600
                )
        )
Run Code Online (Sandbox Code Playgroud)

现在,发生的是我需要转换为友好日期的时间戳.

我是不是该:

A)在控制器中执行此操作?如果是这样,那么挖掘数组的最佳语法是什么呢?

B)在调用时在视图中执行此操作?

<?=date("d/m/Y,$thisEvent['occured']);?>
Run Code Online (Sandbox Code Playgroud)

后者看起来更干净,代码更少,但我不知道我是否可以/应该从控制器应用它的逻辑.

Amy*_*ski 6

如果你要在视图中循环遍历数组以显示事件,我只是将转换放在视图中以节省必须在控制器中循环.

对我来说,日期格式化是一种表现形式 - 而不是商业逻辑.

艾米

  • 日期格式非常符合业务逻辑.我不知道任何会改变日期格式的CSS或HTML.你呢?CSS和HTML被定义为站点的表示层.这就像是说美元或欧元显示货币,或下午1:00与13:00,或(800)888-888与800-888-888等等.这就是所有的商业逻辑.由于它是特定于数据的,因此它属于模型. (3认同)