【问题标题】:show default value in select box cakephp在选择框中显示默认值 cakephp
【发布时间】:2013-06-29 00:37:38
【问题描述】:

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

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'));

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

【问题讨论】:

    标签: cakephp timezone cakephp-2.0 cakephp-2.1


    【解决方案1】:

    将默认值传递给视图的正确方法是在控制器的 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/(默认值部分)。

    【讨论】:

    • thankyou mark.. 效果很好...谢谢你,我不知道我只需要为此编写一行代码
    猜你喜欢
    • 2018-02-13
    • 2019-01-20
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多