0

我正在尝试在 CakePHP 中为时间戳添加分钟。我希望在处理表单时获取时间戳。

请记住,我只是在学习这些东西。

这是我的索引视图中的表单代码...

<?php
echo $this->Form->create('Text');
$expirations = array('9999999'=>'Never','10'=>'10 Minutes','60'=>'1 Hour','1440'=>'1 Day','10080'=>'1 Week','40320'=>'1 Month','525600'=>'1 Year');
echo $this->Form->input('expiration', array('options' => $expirations), array('empty'=>false));
echo $this->Form->input('title');
echo $this->Form->input('body', array('rows' => '3'));
echo $this->Form->end('Upload');
?>

我想从我的“过期”输入中获取值并将该分钟数添加到当前时间。

我目前使用的 PHP 代码是:

DATE_ADD(CURRENT_TIMESTAMP, INTERVAL $expiration MINUTE)

其中 $expiration 是要添加的分钟数。

非常感谢您的帮助。

4

2 回答 2

0

惯于

$expiration += ($minutes * 60);

做这个把戏,还是我错过了什么?

于 2012-04-08T07:46:00.753 回答
0

您从哪里得到输入具有更多参数的想法?

它应该是(如记录):

 echo $this->Form->input('expiration', array('options' => $expirations, 'empty'=>false));

PS:一个好的IDE会通过代码完成告诉你没有这样的参数。

至于您的问题:您可以通过几种方式在保存之前修改数据:

a) 在控制器级别

if ($this->request->is('post') || $this->request->is('put')) {
    $this->request['Text']['expiration'] += $yourValue; // we modify it first and then save it 
    if ($this->Text->save($this->request->data)) {...}
}

b) 在模型中作为回调(推荐)

public function beforeValidate($options = array()) {
    if (isset($this->data[$this->alias]['expiration'])) {
         $this->data[$this->alias]['expiration'] += $yourValue;
    }
    return true;
}
于 2012-04-08T10:03:10.610 回答