实体中的 Symfony2 全局函数
Symfony2 global function in entity
我有一个全局函数 sanitizeName:
function sanitizeName($s) {
return preg_replace('/somethingCrazy/', 'notSoCrazy', $s);
}
我需要在实体(例如 RSS 生成)、Twig 模板和控制器中使用它。
如果我将它写为服务或添加为 Twig function/filter 我将无法在实体中访问它,因为它是错误的。显然我可以将它复制到实体,但这也是一个令人讨厌的解决方案。我该如何正确执行此操作?
您可以使用 static
方法编写自己的 class:
class StringUtils{
public static function sanitizeName($s) {
return preg_replace('/somethingCrazy/', 'notSoCrazy', $s);
}
}
然后,如果您愿意,可以添加一个 Twig
filter/function 来调用此 static
方法。这样,您就可以访问它了:
- 从
Twig
模板中,通过 filter/function
- entity classes 通过调用`StringUtils::sanitizeName($someFoo)
希望这对您有所帮助...
将服务注入实体是不好的做法。所以静态方法就可以了。但是,如果您有将在多个实体中使用的代码,您可以拥有一个具有多个有用功能的 BaseEntity。例如:
/**
* Base class for all project entities.
*/
class BaseEntity
{
public function sanitizeName()
{
return preg_replace('/somethingCrazy/', 'notSoCrazy', $this->getName());
}
}
/**
* My product entity.
*/
class Product extends BaseEntity
{
...
}
这里可以在所有具有 name
属性.
的实体中使用 sanitize 函数
我有一个全局函数 sanitizeName:
function sanitizeName($s) {
return preg_replace('/somethingCrazy/', 'notSoCrazy', $s);
}
我需要在实体(例如 RSS 生成)、Twig 模板和控制器中使用它。
如果我将它写为服务或添加为 Twig function/filter 我将无法在实体中访问它,因为它是错误的。显然我可以将它复制到实体,但这也是一个令人讨厌的解决方案。我该如何正确执行此操作?
您可以使用 static
方法编写自己的 class:
class StringUtils{
public static function sanitizeName($s) {
return preg_replace('/somethingCrazy/', 'notSoCrazy', $s);
}
}
然后,如果您愿意,可以添加一个 Twig
filter/function 来调用此 static
方法。这样,您就可以访问它了:
- 从
Twig
模板中,通过 filter/function - entity classes 通过调用`StringUtils::sanitizeName($someFoo)
希望这对您有所帮助...
将服务注入实体是不好的做法。所以静态方法就可以了。但是,如果您有将在多个实体中使用的代码,您可以拥有一个具有多个有用功能的 BaseEntity。例如:
/**
* Base class for all project entities.
*/
class BaseEntity
{
public function sanitizeName()
{
return preg_replace('/somethingCrazy/', 'notSoCrazy', $this->getName());
}
}
/**
* My product entity.
*/
class Product extends BaseEntity
{
...
}
这里可以在所有具有 name
属性.