我是cakephp的新手..我正在我的webapp中实现时区功能我正在使用这个时区助手类,以便在我的选择框中显示时间
http://bakery.cakephp.org/articles/MarkAlanEvans/2009/12/17/updated-timezone-helper
在我看来,我在这样的选择框中回显时区
echo $this->Timezone->select('timezone');
我现在正在做的是我正在考虑用户选择的时间值,然后更新数据库中的时区字段...我现在想要的是当用户想要再次更改时区时可以在selectbox中看到他的旧时区作为默认值..首先我不知道如何将默认值添加到我的选择框
我的助手类有这个功能
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);
所以为了做到这一点,我应该在helper类中加载模型然后在helper类中查询?那可能吗 ?或者我是不是反对cakephp或mvc规则?那么我的下一个问题就是如何在帮助器中加载模态。
因为如果我能够像这样添加默认值
echo $this->Timezone->select('timezone',array('default'=>'oldtimezone'));
然后我认为我没有必要在助手类中进行更改,因为我简单地将变量从控制器传递到此视图
答案 0 :(得分: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/(默认值部分)。