1

我的 /lib/filter/base/ 文件夹中有一个自动生成的 BaseBlahBlahBlahFilter.class 文件。它包含“数据”类型字段的以下行:

'date'         => new sfWidgetFormFilterDate(array('from_date' => new sfWidgetFormDate(), 'to_date' => new sfWidgetFormDate(), 'with_empty' => true)),

当表单加载时,它会向我显示所有月/日/年下拉列表的空值。有没有办法可以为该下拉菜单设置默认值(例如今天的日期)?

4

3 回答 3

2

一个错误sfWidgetFormSchema导致在渲染小部件时忽略默认小部件的值。应用补丁后,您将能够告诉

'date'         => new sfWidgetFormFilterDate(array(
    'from_date' => new sfWidgetFormDate(array('default' => date())), 
    'to_date' => new sfWidgetFormDate(array('default' => date())), 
    'with_empty' => true)),

例如default选项将起作用。

于 2009-11-25T20:50:14.957 回答
0

必须从表单文件设置默认值,而不是过滤器类。只需在 /lib/form 中查找您的“BlahBlahBlah.class”文件并检查它是否具有 configure() 方法。如果没有,请创建它:

class BlahBlahBlahForm extends sfForm
{
  public function configure()
  {

  }
}

您始终可以使用“普通”类覆盖基类。只需创建一个具有相同名称的文件,减去“Base”部分并将其添加到您的 /lib/form(或 /lib/filter)目录。

从那里您可以执行以下操作:

$this->setDefault('from_date', date('Y/m/d'));
$this->setDefault('to_date', date('Y/m/d'));

在上面的示例中,这会将其设置为当前日期。根据您自己的需要对其进行修改。

Forms 书是一个好的阅读起点。你可以在这里找到它。

于 2009-11-25T19:26:51.757 回答
0

TheGrandWazoo 的答案对于设置 sfWidgetFormDate 的默认值是正确的,但是,我们谈论的是 sfWidgetFormFilterDate,它是 sfWidgetFormDateRange 的扩展。

sfWidgetFormDateRange 封装了两个独立的日期小部件。在这种情况下,您可以设置日期,如下所示:

$form->setDefault('date', array('from' => date('Y/m/d'), 'to' => date('Y/m/d')));
于 2009-11-25T20:01:55.057 回答