Mr.*_* B. 4 oop model-view-controller symfony doctrine-orm twig
我想知道,我应该在Symfony中放置常量,例如映射状态.我习惯在控制器中设置它们,但感觉不对,我更喜欢实体,但不是真的.
什么是对的?
这不是"你怎么想?" - 问题,我真的想知道最佳实践并欣赏解释或链接的来源.两者都有效,现在.
控制器或
namespace my\bundle\Controller;
class MyController {
const STATUS_NEW = 1;
const STATUs_PENDING = 2;
// ...
}
Run Code Online (Sandbox Code Playgroud)
实体?
namespace my\bundle\Entity;
class MyEntity {
const STATUS_NEW = 1;
const STATUs_PENDING = 2;
// ...
}
Run Code Online (Sandbox Code Playgroud)
树枝中的例子:
{% set statusNew = constant('my\\bundle\\Controller\\MyController::STATUS_NEW')%} {# or \\Entity\\ #}
{% if data.status == statusNew %}
Hi, I'm new.
{% endif %}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
M.
恕我直言,实体本身就是一个好地方.对于twig方法,在我之前的项目中,我在实体上创建了一些帮助方法,用于检查状态,如:
namespace my\bundle\Entity;
class MyEntity {
const STATUS_NEW = 1;
const STATUs_PENDING = 2;
// ...
// For each const status
public function isNew(){
return $this->status == self::STATUS_NEW;
}
}
Run Code Online (Sandbox Code Playgroud)
并在树枝中使用如:
{% if data.isNew %}{# more contract form: if data.new #}
Hi, I'm new.
{% endif %}
Run Code Online (Sandbox Code Playgroud)
并且您不会在实体外部公开状态字段(包含新逻辑).
希望这有帮助.