2017-07-17 76 views
0

我想在我的實體中實現一些簡單的業務邏輯,將它傳遞給Twig,但我似乎失敗了某個地方。傳遞給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 %} 

在枝杈人員屬性是從保持了一定的成果在一個陣列,這是兩個實體的加入域控制器通過查詢。

我已經創建了一個Twig AppExtension作爲過濾器,它工作,我只是想將它傳遞給實體邏輯,但我得到的是:無法訪問整型變量的屬性(「isMale」)( 「0」)

可能是虛擬財產?

回答

1

你正在嘗試做這樣的事情:

person->gender() = 0; 

然後:

gender->isMale(); 

但是,你可以看到,0->isMale()是無效的。

所以,你需要這樣的東西:

{{ person.getGender }} 

哪裏getGender是返回的性別(例如「男」)的字符串表示一個getter。

+0

我想這應該回答你的問題。如果你問別的東西,讓我知道,我會刪除我的答案。 –

+1

'person-> gender()'會拋出一個錯誤,儘管它是一個屬性,而不是方法 – DarkBee

+0

@DarkBee在這裏有一個非常好的點。你不要在屬性上調用樹枝,而是使用方法 - 吸氣劑,這就是它們的用途。 –

2

在您的樹枝模板中,您將gender視爲具有方法isMale的對象。如果性別是一個實體/對象本身,那麼你所擁有的person.gender.isMale將是有效的。你應該能夠有一個有效的解決方案,如果你只是將其更改爲person.isMale

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

https://twig.symfony.com/doc/2.x/templates.html#variables