1

我已使用表单助手创建日期时间选择以及何时访问$this->data.

如下所示。

[Timetable] => Array
    (
        [event_id] => 133
        [location_id] => 39
        [start] => Array
            (
                [hour] => 09
                [min] => 06
                [day] => 11
                [month] => 03
                [year] => 2011
            )

    )

但我希望它看起来更像这样......

[Timetable] => Array
    (
        [event_id] => 133
        [location_id] => 39
        [start] => 2011-03-11 09:06:00

    )

有没有办法把它变成这个?

4

3 回答 3

2

您可以像这样在控制器中重建$this->data['Timetable']['start']var:

$this->data['Timetable']['start'] = $this->data['Timetable']['start']['year']
    .'-'.$this->data['Timetable']['start']['month']
    .'-'.$this->data['Timetable']['start']['day']
    .' '.$this->data['Timetable']['start']['hour']
    .':'.$this->data['Timetable']['start']['min'];

应该可以正常工作。

于 2011-03-11T10:51:51.547 回答
1

这在 Cookbook 中没有记录,但是模型用来将该数组转换为数据库友好格式的函数是Model::deconstruct($field, $data). 您可以按如下方式使用它:

$startAsString = $this->Timetable->deconstruct(
    'start', $this->data['Timetable']['start']
);

该解决方案的好处是不会破坏 MVC 抽象,因为您的控制器知道有关表单提交的数据结构或数据库如何存储它的任何信息。

于 2011-03-11T14:41:53.400 回答
0

由于您使用表单助手来生成代码,因此除非您更改表单助手,否则无法将其放入单个索引中。

你可能正在使用

$this->Form->input('start')

将其更改为以下将使其以您想要的方式出现。

$this->Form->input('start', array('type'=>'text'));

但是,如果您这样做,您将失去蛋糕自动为您生成的所有下拉菜单。如果您使用日期选择器,这不是问题。

于 2011-03-11T10:46:44.147 回答