在我的自定义模块中,我有以下代码:
public function url() {
$current_path = \Drupal::service('path.current')->getPath();
return $current_path;
}
如何在我的树枝模板中使用此功能?
注意:我知道我可以更容易地获得当前路径。我只指定了这个函数,所以我可以在twig中得到使用自定义php函数的想法。
答案 0 :(得分:2)
您可以在Twig(Drupal)中获取当前路径:
<a href="{{ url('<current>') }}">{{ 'I represent current page URL :)'|t }}</a>
修改强>
正如Drupal文档中所定义的,您可以在此示例之后将自己的函数添加到twig模板,该示例演示了如何向twig模板添加函数或过滤器:
namespace Drupal\twig_extension_test\TwigExtension;
use Drupal\Core\Template\TwigExtension;
/**
* A test Twig extension that adds a custom function and a custom filter.
*/
class TestExtension extends TwigExtension {
/**
* Generates a list of all Twig functions that this extension defines.
*
* @return array
* A key/value array that defines custom Twig functions. The key denotes the
* function name used in the tag, e.g.:
* @code
* {{ testfunc() }}
* @endcode
*
* The value is a standard PHP callback that defines what the function does.
*/
public function getFunctions() {
return array(
'testfunc' => new \Twig_Function_Function(array('Drupal\twig_extension_test\TwigExtension\TestExtension', 'testFunction')),
);
}
/**
* Generates a list of all Twig filters that this extension defines.
*
* @return array
* A key/value array that defines custom Twig filters. The key denotes the
* filter name used in the tag, e.g.:
* @code
* {{ foo|testfilter }}
* @endcode
*
* The value is a standard PHP callback that defines what the filter does.
*/
public function getFilters() {
return array(
'testfilter' => new \Twig_Filter_Function(array('Drupal\twig_extension_test\TwigExtension\TestExtension', 'testFilter')),
);
}
/**
* Gets a unique identifier for this Twig extension.
*
* @return string
* A unique identifier for this Twig extension.
*/
public function getName() {
return 'twig_extension_test.test_extension';
}
/**
* Outputs either an uppercase or lowercase test phrase.
*
* The function generates either an uppercase or lowercase version of the
* phrase "The quick brown fox jumps over the lazy dog 123.", depending on
* whether or not the $upperCase parameter evaluates to TRUE. If $upperCase
* evaluates to TRUE, the result will be uppercase, and if it evaluates to
* FALSE, the result will be lowercase.
*
* @param bool $upperCase
* (optional) Whether the result is uppercase (true) or lowercase (false).
*
* @return string
* The generated string.
*
* @see \Drupal\system\Tests\Theme\TwigExtensionTest::testTwigExtensionFunction()
*/
public static function testFunction($upperCase = FALSE) {
$string = "The quick brown box jumps over the lazy dog 123.";
if ($upperCase == TRUE) {
return strtoupper($string);
}
else {
return strtolower($string);
}
}
/**
* Replaces all instances of "animal" in a string with "plant".
*
* @param string $string
* The string to be filtered.
*
* @return string
* The filtered string.
*
* @see \Drupal\system\Tests\Theme\TwigExtensionTest::testTwigExtensionFilter()
*/
public static function testFilter($string) {
return str_replace(array('animal'), array('plant'), $string);
}
}