0

我有Task将日期保存为时间戳的模型,当我分页时,我不想显示为“今天”、“明天”、“下周”等。我制作niceDate_hr($date)了返回我需要的字符串的自定义函数。但是我在修改分页器制作的数组时遇到了问题。我目前的代码是:

    $this->loadModel('Task');
    $this->Task->create();
    $this->Paginator->settings = array(
        'conditions' => array('Task.user_id' => $user['ID']),
        'limit' => 5,
        'order' => array('Task.date' => 'desc')
    );
    $tasks = $this->Paginator->paginate('Task');
    $ctask = new TasksController;
    foreach ($tasks as $task) {
        $task['Task']['date'] = $ctask->niceDate_hr($task['Task']['date']);
    }
    $this -> set('tasks', $tasks);

PS 请原谅我的任何语法和拼写错误。

4

1 回答 1

2

您违反了MVC模式。不要那样做: $ctask = new TasksController;有很多关于为什么这是错误的细节的信息。只有调度程序应该实例化控制器,并且应该总是只有一个控制器实例。你永远不会实例化控制器。除了在测试中。

此外,您正在进行数据操作,当需要时,它应该发生在模型层,而不是控制器中。但是你想格式化输出,这应该发生在视图层。

正确的实现是移动您的自定义方法,该方法也不遵循约定(应命名为驼峰式),并您的视图中使用它。

foreach ($tasks as $task) {
       echo $this->MyFancyHelper->niceDateHr($task['Task']['date']);
}

我不知道你如何格式化你的日期,但是 CakePHP 带有一个时间助手,它也允许格式化。

于 2015-10-21T08:38:32.103 回答