【问题标题】:CakePHP Form Helper and DatetimeCakePHP 表单助手和日期时间
【发布时间】:2011-03-11 10:40:24
【问题描述】:

我已使用表单助手创建日期时间选择以及何时访问$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

    )

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

【问题讨论】:

    标签: php datetime cakephp form-helpers


    【解决方案1】:

    您可以像这样在控制器中重建 $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'];
    

    应该可以正常工作。

    【讨论】:

    • sprintf() 会更好:) 但这不是必需的,因为蛋糕知道如何处理它。
    • 这会是最好的方法吗?不能使用表单助手本身来完成吗?
    • 并非如此,因为助手只能通过设计在视图中使用。
    • 我可能会把它放在Timetable 模型的beforeSave() 函数中而不是控制器中。只是说'
    【解决方案2】:

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

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

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

    【讨论】:

    • 您可以从模型内部或控制器中访问它。这取决于您需要在哪里访问日期时间,以及出于什么目的。
    【解决方案3】:

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

    你可能正在使用

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

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

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

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

    【讨论】:

    • cake 会知道如何处理数组并按原样保存。
    • @dogmatic69,没错。我假设 OP 希望它作为其他东西的单个字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多