php - 在 Twig 中使用命名空间别名

标签 php symfony namespaces twig

我有一段代码可以检查 Twig 模板中的一些实体常量:

{% if logRecord.status is constant('App\\DealBundle\\Entity\\Deal::DEAL_STATE_MONEY_RESERVED') %}

但是每次都用这么长的类名,实在是太尴尬了。有没有办法在 Twig 中创建 namespace 别名?像这样的东西:

{% use App\\DealBundle\\Entity\\Deal %}
{% if logRecord.status is constant('Deal::DEAL_STATE_MONEY_RESERVED') %}

或者我总是需要写完整的类名?

最佳答案

我遇到了同样的问题,结果证明解决方案非常简单。这个宏在我们的例子中不起作用,因为我们不仅要将常量值用于渲染,还要将其用作值(int、string、float 等)。这是不可能的,因为使用这个宏,Twig 将值转换为 Twig_Markup 类。

所以解决方案是下一个。在您声明的模板中的某处:

    {% set namespace = 'App\\DealBundle\\Entity\\' %}

然后在另一个地方你可以这样使用它:

    {% if logRecord.status is constant(namespace~'Deal::DEAL_STATE_MONEY_RESERVED') %}

关于php - 在 Twig 中使用命名空间别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16114532/

相关文章:

php - aws s3Client PutObject 访问被拒绝,但 Cyber​​Duck 可以成功 PutObject

php - 多个数据库与单个数据库

php - 如何查找和替换 MySQL 文本字段中的整个单词?

join - Doctrine join 绕过延迟加载

php - 使用 Neo4j 的新闻源中帖子/更新的时间衰减因子

docker - 在使用Docker主机时获取net::ERR_NAME_NOT_RESOLVED

symfony2 : How to disable APC cache selectively on few routes

ruby-on-rails - 与属于命名空间 Rails 4 的资源相关联的匹配

c++ - 使用 std::equal 和命名空间时出现 "No match operator=="错误

javascript - 我如何以类、命名空间的形式组织 javascript 代码(相同的 C#)