ProjectTwigExtension.php
class ProjectTwigExtension extends Twig_Extension {
public function getFunctions() {
return array(
new Twig_SimpleFunction('get_unique_key', array($this, 'getUniqueKey')),
);
}
private $keys = array();
/**
* Create an unique HTML identifier for a form element
*
* @param $name String to make unique
*
* @returns String
*/
public function getUniqueKey($name) {
if (!in_array($name, $this->keys)) {
$this->keys[] = $name;
return $name;
}
$i = 0;
while(in_array($name.++$i,$this->keys)) {}
$this->keys[] = $name.$i;
return $name.$i;
}
public function getName() {
return 'ProjectTwigExtension';
}
}
config.phpの
$twig = new Twig_Environment($loader);
$twig->addExtension(new ProjectTwigExtension());
template.twig
{% block radio_widget -%}
{% set id = get_unique_key('radio_') %}
<div class="radio">
<label for="{{ id }}">Label for {{ id }}</label>
<input type="radio" id="{{ id }}" {# ...#}/>
</div>
{%- endblock radio_widget %}
あなたは、フォームレンダリングに使用されるメインのラジオウィジェットについて話していますか?もしそうなら、すでに 'form.vars.id'にウィジェット依存のunqiue IDがあります。 – Yoshi
@ Yoshi私が必要としていたもの。それを回答として投稿し、私はそれを受け入れます。ありがとうございました! –