自定义symfony小部件出错

时间:2012-03-09 20:37:17

标签: php symfony1 widget symfony-1.4

我想编写一个从sfFormWidgetChoice扩展的自定义小部件。 但是,我发现symfony文档的指南有点令人困惑。 我觉得他们只是将完成的代码扔给我们。 http://www.symfony-project.org/more-wit。验证

我特别得到这个错误: 未定义的索引:Renderer_options

我知道我做错了什么。我只是不知道我需要在sfFormWidgetChoice上覆盖什么。

是否可以创建不需要任何参数的窗口小部件? 你能提供一些关于如何创建自定义小部件的步骤吗?

1 个答案:

答案 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中所示)实现自定义逻辑。