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正是我所需要的。發佈它作爲答案,我會接受它。謝謝! –