我试图在我的实体中实现一些简单的业务逻辑,将它传递给Twig,但我似乎在某处失败了。
我有两个实体用户和客户,他们正在扩展一个名为人的抽象实体,并分享一些字段,包括性别
我想在Person Entity中创建一个isser,它获取性别的整数值(0或1),并将其转换为男性或女性的字符串,如:
{% for person in person %}
<tr>
<td>{{ person.gender.isMale }}</td>
<tr>
{% endfor %}
这样我就可以在我的Twig模板中传递这样的业务逻辑:
def get_docs(data, url):
response = requests.Session().get(url)
tree = html.fromstring(response.text)
heading = tree.findtext('.//h1[@class="gamma"]')
for item in tree.xpath("//p[@class='woVideoListDefaultSeriesTitle']"):
title = item.findtext('.//a')
sheetname = heading.split(" ")[-4]
if sheetname in data:
data[sheetname].append([title])
else:
data[sheetname] = [[title]]
save_data("mth.ods", data)
Twig中的person属性是一个从Controller传递的查询,它将一些结果保存在一个数组中,这两个实体是两个实体的连接字段。
我已经创建了一个Twig AppExtension作为过滤器,它可以工作,我只是想将它传递给实体逻辑,但我得到的是:无法访问属性(&#34; isMale&#34; )对整数变量(&#34; 0&#34;)。
可能是虚拟财产?
答案 0 :(得分:2)
在twig模板中,您将gender
视为具有方法isMale
的对象。如果性别是一个实体/对象本身,那么您拥有的person.gender.isMale
将是有效的。如果只是将其更改为person.isMale
{% for person in person %}
<tr>
<td>{{ person.isMale }}</td>
<tr>
{% endfor %}
答案 1 :(得分:1)
你正试图做这样的事情:
person->gender() = 0;
然后:
gender->isMale();
但是,您可以看到0->isMale()
无效。
所以你需要这样的东西:
{{ person.getGender }}
其中getGender
是一个返回性别的字符串表示形式的getter(例如“male”)。