cakephp中paginator数组的数据操作

时间:2015-10-21 08:31:14

标签: php cakephp cakephp-2.6

我有Task型号,其日期保存为时间戳,当我分页时我不会显示为"今天","明天",& #34;下周"等我自定义函数niceDate_hr($date)返回我需要的字符串。但我修改了paginator所做的数组有问题。我目前的代码是:

    $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);

P.S。请原谅我任何语法和拼写错误。

1 个答案:

答案 0 :(得分:2)

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

此外,您正在进行数据操作,在需要时,应该在控制器中的模型层中发生 not 。但您希望格式化输出,这应该在视图层中进行。

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

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

我不知道您如何设置日期格式,但CakePHP附带了一个允许格式化的时间助手。