表单字段的格式值

时间:2015-07-14 11:55:37

标签: javascript php forms cakephp

我有一个编辑表单,从相应的模型中填充。它有一个文本字段,其日期值与之关联。我正在使用一个JavaScript插件,允许用户从弹出窗口中选择一个日期,它在July 15, 2015字段中很好地显示它,但插件实际上提交了一个隐藏字段,其格式为我的数据库所期望的。

当我进入编辑页面时,该字段预先填充了丑陋的日期格式值,并且插件在初始化时不会更新日期的格式,仅当用户选择了日期。在cakephp中是否有一种方法我可以在它显示到页面之前预先格式化该值?即使我通过JavaScript插件运行它来处理那个很棒的格式。

我的表单字段

echo $this->Form->input('date', array(
    'type' => 'text',
    'class' => 'pickadate',
    'placeholder' => 'Pick Date',
    'required' => true
));

我使用的插件是http://amsul.ca/pickadate.js/date/

$('.pickadate').pickadate
    format: 'mmmm dd, yyyy'
    formatSubmit: 'yyyy-mm-dd'
    hiddenName: true
    container: 'main'

更新

在指向使用控制器格式化值之前,这里传递给视图是我的控制器代码,因为我不知道该怎么做

public function edit($id = NULL) {
    if (!$this->Meeting->exists($id)) {
        throw new NotFoundException('Invalid meeting');
    }
    if ($this->request->is(array('post', 'put'))) {
        if ($this->Meeting->save($this->request->data)) {
            $this->Session->setFlash('The meeting has been saved.','default',array('class'=>'success'),'flash');
            return $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash('The meeting could not be saved. Please, try again.','default',array('class'=>'error'),'flash');
        }
    } else {
        $this->request->data = $this->Meeting->find('first', array(
            'conditions' => array(
                'Meeting.id' => $id,
            ),
        ));
    }
    $this->Meeting->set('date', CakeTime::format($this->Meeting->date, '%B %d, %Y'));
    $meetingRooms = $this->Meeting->MeetingRoom->find('list');
    $users = $this->Meeting->User->find('list');
    $events = $this->Meeting->Event->find('list');
    $this->set(compact('meetingRooms', 'users', 'events'));
}

2 个答案:

答案 0 :(得分:0)

我发现我正在设置$this->request->data中正在发送到视图的数据,所以我将更新日期的代码更改为

$this->request->data['Meeting']['date'] = CakeTime::format($this->request->data['Meeting']['date'], '%B %d, %Y');

答案 1 :(得分:0)

你可以在模型中加载一个虚拟字段来创建你想要的格式,所以结果是通过sql计算的,而不是在查找之后......

从模型中:

$this->virtualFields['date'] = 'DATE_FORMAT(date,"%d/%m/%Y")';

来自Controller:

$this->Meeting->virtualFields['date'] = 'DATE_FORMAT(date,"%d/%m/%Y")';