Php 传递给Twig的实体业务逻辑

Php 传递给Twig的实体业务逻辑,php,entity-framework,symfony,doctrine,twig,Php,Entity Framework,Symfony,Doctrine,Twig,我试图在我的实体中实现一些简单的业务逻辑以将其传递给Twig,但我似乎在某个地方失败了 我有两个实体用户和客户,他们正在扩展一个名为人的抽象实体,并共享一些字段,包括性别 我想在Person实体中创建一个isser,该实体获取性别的整数值(0或1),并将其转换为一个字符串,例如: public function isMale() { if($this->gender == 0) { $myGender = "Male"; } else {

我试图在我的实体中实现一些简单的业务逻辑以将其传递给Twig,但我似乎在某个地方失败了

我有两个实体用户客户,他们正在扩展一个名为的抽象实体,并共享一些字段,包括性别

我想在Person实体中创建一个isser,该实体获取性别的整数值(0或1),并将其转换为一个字符串,例如:

public function isMale()
{
    if($this->gender == 0) {
        $myGender =  "Male";
    }
    else {
        $myGender = "Female";
    }

    return $myGender;
}
因此,我可以在我的小树枝模板中传递此业务逻辑,如下所示:

{% for person in person %}
      <tr>
          <td>{{ person.gender.isMale }}</td>
      <tr>
{% endfor %}
{{ person.getGender }}
{%用于人对人%}
{{person.gender.isMale}
{%endfor%}
Twig中的person属性是从控制器传递的查询,该控制器在数组中保存一些结果,数组是两个实体的连接字段

我已经创建了一个Twig AppExtension作为过滤器,它可以工作,我只是想将它传递给实体逻辑,但我得到的是:无法访问整数变量(“0”)上的属性(“isMale”)


可能是虚拟财产???

您正在尝试这样做:

person->gender() = 0;
然后:

但是,您可以看到
0->isMale()
无效

所以你需要一些类似的东西:

{% for person in person %}
      <tr>
          <td>{{ person.gender.isMale }}</td>
      <tr>
{% endfor %}
{{ person.getGender }}

其中,
getGender
是一个getter,返回性别的字符串表示形式(例如“male”)。

您正在尝试这样做:

person->gender() = 0;
然后:

但是,您可以看到
0->isMale()
无效

所以你需要一些类似的东西:

{% for person in person %}
      <tr>
          <td>{{ person.gender.isMale }}</td>
      <tr>
{% endfor %}
{{ person.getGender }}

其中,
getGender
是返回性别字符串表示形式的getter(例如“male”)。

在细枝模板中,您将
gender
视为具有方法
isMale
的对象。如果性别本身是一个实体/对象,那么你所拥有的person.gender.isMale将是有效的。如果您将其更改为
person.isMale

{% for person in person %}
      <tr>
          <td>{{ person.isMale }}</td>
      <tr>
{% endfor %}
{%用于人对人%}
{{person.isMale}}
{%endfor%}

在细枝模板中,您将
gender
视为具有方法
isMale
的对象。如果性别本身是一个实体/对象,那么你所拥有的person.gender.isMale将是有效的。如果您将其更改为
person.isMale

{% for person in person %}
      <tr>
          <td>{{ person.isMale }}</td>
      <tr>
{% endfor %}
{%用于人对人%}
{{person.isMale}}
{%endfor%}

我认为这应该回答你的问题。如果您询问其他问题,请告诉我,我将删除我的答案。
person->gender()
将抛出一个错误,因为它是一个属性,而不是一个属性method@DarkBee这一点很有道理。你不调用属性上的细枝,而是使用方法-getter,这就是它们的用途。我认为这应该回答你的问题。如果您询问其他问题,请告诉我,我将删除我的答案。
person->gender()
将抛出一个错误,因为它是一个属性,而不是一个属性method@DarkBee这一点很有道理。您不调用属性上的细枝,而是使用方法-getter,这就是它们的用途。