私は選択メニューを再利用したいが、それは毎回そのIDとその名前をTwigで変更する。どのようにそれを行うことができますか?枝に異なるidsと名前のメニューを再利用
私は選択メニューについてのラッパーブロックを考えて、それを再利用するたびに延長しました。しかし、{{ parent() }}
を使用してIDと名前の値を設定するにはどうすればよいですか?
私は選択メニューを再利用したいが、それは毎回そのIDとその名前をTwigで変更する。どのようにそれを行うことができますか?枝に異なるidsと名前のメニューを再利用
私は選択メニューについてのラッパーブロックを考えて、それを再利用するたびに延長しました。しかし、{{ parent() }}
を使用してIDと名前の値を設定するにはどうすればよいですか?
カスタムTwig_Extension
クラスのキーを保存して作成することでこれを行いますが、ここでは小さな設定です。グローバルそれを維持することで、私はすべてのビュー/マクロ/ includeにユニークなIDを確保することができます...
example.twig
{% for i in 1..5 %}
<ul id="{{ get_unique_key('my_menu') }}">
<li>Foo</li>
</ul>
{% endfor %}
ProjectTwigExtension
class ProjectTwigExtension extends Twig_Extension {
private $keys = array();
public function getFunctions() {
return array(
new Twig_SimpleFunction('get_unique_key', array($this, 'getUniqueKey')),
);
}
/**
* Create an unique HTML identifier
*
* @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';
}
}
登録拡張子
$twig = new Twig_Environment($loader);
$twig->addExtension(new ProjectTwigExtension());
[macros](http://twig.sensiolabs.org/doc/2.x/tags/macro.html)おそらく? – Yoshi