我正在为日期字段使用自定义Widget,我希望在我的所有表单中使用它.问题是symfony使用默认的sfWidgetFormDate.我想要的是更改此默认小部件,以便使用我的自定义Widget生成表单.我不想手工改变生成的所有表格.
我发现的唯一方法是修改BaseFormDoctrine.php:
public function setup()
{
foreach($this->getWidgetSchema()->getFields() as $name=>$widget)
{
if($widget instanceof sfWidgetFormDate)
{
$this->widgetSchema[$name] = new sfWidgetFormJQueryDate(array(
'config' => '{}',
'image'=>'/images/calendar.png',
));
}
}
}
Run Code Online (Sandbox Code Playgroud)
你可以做的是创建自己的表单生成器类.
class myFormGenerator extends sfDoctrineGenerator
{
public function getWidgetClassForColumn($column)
{
switch ($column->getDoctrineType())
{
case 'date':
return 'sfWidgetFormJQueryDate';
break;
default:
return parent::getWidgetClassForColumn($column);
}
}
}
Run Code Online (Sandbox Code Playgroud)
保存在lib文件夹中合理的位置,清除缓存等.
然后像这样重新运行你的发电机......
php doctrine:build-forms --generator-class='myFormGenerator'
Run Code Online (Sandbox Code Playgroud)
我没有尝试过任何上述内容,但我认为理论是合理的......
看看下面的文件,看看我从中得出的结论:
lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildFormsTask.class.php
lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/generator/sfDoctrineFormGenerator.class.php
Run Code Online (Sandbox Code Playgroud)