1
我想添加我自己的擴展到樹枝。 基本用法正在工作,但我想要的是,我可以用供應商前綴調用我的函數。使用供應商前綴的樹枝延長
舉例: LinkViewHelper:
class LinkViewHelper extends \Twig_Extension {
public function getFunctions()
{
return array(
'link' => new \Twig_Filter_Method(
$this,
'link',
array('is_safe' => array('html'))
)
);
}
public function link($text, $uri, array $additionalParams = array(), array $aTagParams = array(), $external=false)
{
$uri = $this->uri($uri, $additionalParams, $external);
// Some additional parsing
return $url; // will be somehting like <a href="http://www.google.de" target="_blank">Go to Google now!</a>
}
public function uri($uri, array $additionalParams = array(), $external = false)
{
// Some parsing goes here
return $uri; // will be something like http://www.google.com/
}
/**
* Returns the name of the extension.
*
* @return string The extension name
*/
public function getName()
{
return 'url';
}
}
加載在我的引導:
$this->environment->addExtension(new LinkViewHelper());
現在我可以調用函數與{{ link }}
但我想是這樣稱呼它{{ url.link }}
。我怎樣才能做到這一點?
問候, cefuroX
編輯: 嚴重的是,反對投票的一個問題,因爲你不明白的問題是沒有作用的:)
爲什麼不加的,而不是一個功能的過濾器,你可以做'{網址|友情鏈接''?如果你想做'{{url.link}}',函數鏈接必須是對象url的函數。 – Med
因爲「url」不是字符串,而是ViewHelper的名稱。 它在邏輯上不是過濾器。我不想過濾我想要創建網址的網址。 過濾器在這裏不是一個有用的選項。 –
您是否試圖按照[此處](http://twig.sensiolabs.org/doc/advanced.html#globals)所述將您的對象註冊爲全局對象? – Matteo