Symfony1 如何向SFWidgetFormPropertyChoice生成的每个选项标记动态添加属性?
在我的symfony1.4应用程序中,我将生成一个select下拉列表作为表单的一部分 稍后我想对该select应用一些jQuery(ddSlick)来重新设置它的样式。为此,我需要为每个选项标记添加一个属性 例如,我希望我的select生成:Symfony1 如何向SFWidgetFormPropertyChoice生成的每个选项标记动态添加属性?,symfony1,symfony-1.4,propel,Symfony1,Symfony 1.4,Propel,在我的symfony1.4应用程序中,我将生成一个select下拉列表作为表单的一部分 稍后我想对该select应用一些jQuery(ddSlick)来重新设置它的样式。为此,我需要为每个选项标记添加一个属性 例如,我希望我的select生成: <select id="demo-htmlselect"> <option value="0" data-imagesrc="http://dl.dropbox.com/u/40036711/Images/faceboo
<select id="demo-htmlselect">
<option value="0" data-imagesrc="http://dl.dropbox.com/u/40036711/Images/facebook-icon-32.png"
data-description="Description with Facebook">Facebook</option>
<option value="1" data-imagesrc="http://dl.dropbox.com/u/40036711/Images/twitter-icon-32.png"
data-description="Description with Twitter">Twitter</option>
<option value="2" selected="selected" data-imagesrc="http://dl.dropbox.com/u/40036711/Images/linkedin-icon-32.png"
data-description="Description with LinkedIn">LinkedIn</option>
<option value="3" data-imagesrc="http://dl.dropbox.com/u/40036711/Images/foursquare-icon-32.png"
data-description="Description with Foursquare">Foursquare</option>
脸谱网
啁啾
LinkedIn
四方
对如何实现这一目标有何建议?可能使用备用或扩展小部件?如果要自定义“选择渲染”,应扩展默认小部件并创建自己的渲染 因此,创建以下示例文件:
/lib/widget/myWidgetFormSelect.class.php
:
class myWidgetFormSelect extends sfWidgetFormSelect
{
protected function getOptionsForSelect($value, $choices)
{
$mainAttributes = $this->attributes;
$this->attributes = array();
if (!is_array($value))
{
$value = array($value);
}
$value_set = array();
foreach ($value as $v)
{
$value_set[strval($v)] = true;
}
$options = array();
foreach ($choices as $key => $option)
{
$attributes = array(
'value' => self::escapeOnce($key),
'data-imagesrc' => self::escapeOnce($option['imagesrc']),
'data-description' => self::escapeOnce($option['description'])
);
if (isset($value_set[strval($key)]))
{
$attributes['selected'] = 'selected';
}
$options[] = $this->renderContentTag('option', self::escapeOnce($option['title']), $attributes);
}
$this->attributes = $mainAttributes;
return $options;
}
}
然后,您应该采用向小部件提供$choices
的方式。在这里,小部件等待这样的数组:
$choices = array(
0 => array(
'title' => 'Facebook',
'imagesrc' => 'http://dl.dropbox.com/u/40036711/Images/facebook-icon-32.png',
'description' => 'Description with Facebook',
),
1 => array(
'title' => 'Twitter',
'imagesrc' => 'http://dl.dropbox.com/u/40036711/Images/twitter-icon-32.png',
'description' => 'Description with Twitter',
),
);
这个问题与?另一个问题本来应该是更一般的情况,尽管我不小心将它标记为symfony。你不接受,因为它不起作用?