我想编写一个从sfFormWidgetChoice扩展的自定义小部件。 但是,我发现symfony文档的指南有点令人困惑。 我觉得他们只是将完成的代码扔给我们。 http://www.symfony-project.org/more-wit。验证
我特别得到这个错误: 未定义的索引:Renderer_options
我知道我做错了什么。我只是不知道我需要在sfFormWidgetChoice上覆盖什么。
是否可以创建不需要任何参数的窗口小部件? 你能提供一些关于如何创建自定义小部件的步骤吗?
答案 0 :(得分:1)
创建自定义窗口小部件时,通常会覆盖configure
(添加自定义选项)和render
(以修改窗口小部件的渲染)方法。
我认为您收到此错误是因为您没有调用父类的configure
方法:
// in YourCustomWidget class
protected function configure($options = array(), $attributes = array())
{
parent::configure($options, $attributes);
// add your options here
$this->addRequiredOption('your_mandatory_option');
$this->addOption('your_optional_option', 'default_value');
}
sfWidgetFormChoice
只有一个必需选项(你称之为“参数”)choices
数组,所以你应该在创建你的小部件时传递它:
// in your form class
$this->setWidget('your_field', new YourCustomWidget(array(
`choices` => array('a' => 'a', 'b' => 'b', 'c' => 'c')
)));
要自定义窗口小部件的呈现,请覆盖渲染方法(就像the docs中所示)实现自定义逻辑。