gpt4 book ai didi

symfony1 - 如何单独显示 sfWidgetFormChoice 的单选按钮?

转载 作者:行者123 更新时间:2023-12-02 08:03:37 31 4
gpt4 key购买 nike

我想以这种方式呈现 symfony 形式:

form with radio buttons

我的问题涉及单选按钮小部件:我不知道如何单独呈现每个选项,以便在这些单选按钮之间显示其他字段。

有没有办法用 symfony 表单来实现这一点?

谢谢!

最佳答案

Symfony 让这件事变得有点困难。您想要一个可从 View 调用的 renderChoice( $value) 方法,但这需要更改或扩展 sfFormField。

更改它不是面向 future 的,扩展它还需要您更改一些 symfony 变量,以便您 View 中可访问的字段是这个新类的实例。我不知道这个选项是否存在。

相反,我选择将 sfWidgetFormSelectRadio 扩展为以下非常简单的类,该类扩展了 formatChoices。它将检查您是否只要求一种选项。如果是,它会渲染该标签并返回它,否则它会通过 parent:: 正常渲染。

这可以让您从 View 中调用:$form['field']->render(array('only_choice'=> $value))
其中 $value 是要呈现的单选选项的索引:

<?php

/**
* sfWidgetFormSelectRadioSingleable lets you render just one option at a time.
*
* @package symfony
* @subpackage widget
* @author Fabien Potencier <<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="137572717a767d3d637c67767d707a766153606a7e757c7d6a3e63617c797670673d707c7e" rel="noreferrer noopener nofollow">[email protected]</a>>
* @version SVN: $Id: sfWidgetFormSelectRadio.class.php 27738 2010-02-08 15:07:33Z Kris.Wallsmith $
*/
class sfWidgetFormSelectRadioSingleable extends sfWidgetFormSelectRadio
{
public function formatChoices($name, $value, $choices, $attributes)
{
$onlyChoice = (!empty($attributes['only_choice'])) ? $attributes['only_choice'] : false; unset($attributes['only_choice']);

if($onlyChoice)
{
if(!isset($choices[$onlyChoice]))
throw new Exception("Option '$onlyChoice' doesn't exist.");

$key = $onlyChoice;
$option = $choices[$key];
$baseAttributes = array(
'name' => substr($name, 0, -2),
'type' => 'radio',
'value' => self::escapeOnce($key),
'id' => $id = $this->generateId($name, self::escapeOnce($key)),
);

if (strval($key) == strval($value === false ? 0 : $value))
{
$baseAttributes['checked'] = 'checked';
}

return $this->renderTag('input', array_merge($baseAttributes, $attributes));
}
else
{
return parent::formatChoices($name, $value, $choices, $attributes);
}
}
}

代码很笨拙,但在实践中很容易使用,并且将来不会中断。

关于symfony1 - 如何单独显示 sfWidgetFormChoice 的单选按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5169068/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com