0

我是 cakephp 的新手 .. 我正在我的 web 应用程序中实现时区功能我正在使用这个时区帮助程序类来在我的选择框中显示时间

http://bakery.cakephp.org/articles/MarkAlanEvans/2009/12/17/updated-timezone-helper

在我看来,我在这样的选择框中呼应时区

  echo $this->Timezone->select('timezone');

我现在正在做的是我正在获取用户选择的任何时间的值,然后更新数据库中的时区字段......我现在想要的是当用户想要再次更改时区时他如何看到他的选择框中的旧时区作为默认值..第一件事我不知道如何将默认值添加到我的选择框

我的助手类有这个功能

 function select($fieldname, $label="Please Choose a timezone") { 

     $list = $this->Form->input($fieldname, array("type"=>"select", "label"=>$label, "options"=>$this->timezones, "error"=>"Please choose a timezone")); 
    return $this->output($list); 
  } 

第二件事就像我想显示默认值一样,显然我必须从数据库中查询,然后检索用户的旧时区..所以问题是我是否必须将默认值附加到我的助手类像这样的例子

   $list = $this->Form->input($fieldname,  array("type"=>"select",'default'=>'$oldtimezone', "label"=>$label, "options"=>$this->timezones, "error"=>"Please choose a timezone")); 
    return $this->output($list);

所以为了做到这一点,我是否必须在帮助类中加载模型,然后在帮助类中查询?那可能吗 ?还是我不违反 cakephp 或 mvc 规则?那么我的下一个问题变成了如何在助手中加载模态。

因为如果我能够像这样在此处添加默认值

  echo $this->Timezone->select('timezone',array('default'=>'oldtimezone'));

然后我认为我不需要在助手类中进行更改,因为我只是将变量从控制器传递到这个视图

4

1 回答 1

0

将默认值传递给视图的正确方法是在控制器的 else 块中执行此操作:

if (posted) {
    //validate and save
} else {
    //default values here
    $this->request->data['Modelname']['timezone'] = $timeZoneFromDb;
}

通过这种方式,您可以利用控制器逻辑,而无需在视图/帮助器中执行任何操作。

有关详细信息(默认值部分),请参见http://www.dereuromark.de/2010/06/23/working-with-forms/

于 2013-06-28T16:37:38.690 回答