cakephp中分页器数组的数据操作
data manipulation of paginator array in cakephp
我有 Task
模型,它的日期保存为时间戳,当我分页时,我不想显示为 "Today"、"Tomorrow"、"Next Week" 等. 我制作了我需要的 returns 字符串的自定义函数 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);
P.S。请原谅任何语法和拼写错误。
您违反了 MVC 模式。 不要那样做: $ctask = new TasksController;
有大量信息详细说明了为什么这是错误的。只有调度程序应该实例化控制器,并且应该始终只有一个控制器实例。您永远不会实例化控制器。除了测试。
此外,您正在进行数据操作,如果需要,应该在模型层中进行,而不是在控制器中进行。但是你想格式化输出,这应该发生在 view 层。
正确的实施方式是移动您的自定义方法,该方法也不遵循约定(应命名为驼峰式),in a helper并在您的视图中使用它。
foreach ($tasks as $task) {
echo $this->MyFancyHelper->niceDateHr($task['Task']['date']);
}
我不知道你是如何格式化你的日期的,但 CakePHP 附带了一个时间助手,它也允许格式化。
我有 Task
模型,它的日期保存为时间戳,当我分页时,我不想显示为 "Today"、"Tomorrow"、"Next Week" 等. 我制作了我需要的 returns 字符串的自定义函数 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);
P.S。请原谅任何语法和拼写错误。
您违反了 MVC 模式。 不要那样做: $ctask = new TasksController;
有大量信息详细说明了为什么这是错误的。只有调度程序应该实例化控制器,并且应该始终只有一个控制器实例。您永远不会实例化控制器。除了测试。
此外,您正在进行数据操作,如果需要,应该在模型层中进行,而不是在控制器中进行。但是你想格式化输出,这应该发生在 view 层。
正确的实施方式是移动您的自定义方法,该方法也不遵循约定(应命名为驼峰式),in a helper并在您的视图中使用它。
foreach ($tasks as $task) {
echo $this->MyFancyHelper->niceDateHr($task['Task']['date']);
}
我不知道你是如何格式化你的日期的,但 CakePHP 附带了一个时间助手,它也允许格式化。