我创建了一个可以从伏特访问的自定义功能。该函数似乎工作正常,但我无法管理将变量发送到函数。它将变量作为文本而不是其值发送。
树枝功能:
$volt->getCompiler()->addFunction('getusergroup', function ($user) {
return \Models\User::getUserGroup($user);
});
模型中的功能:
public static function getUserGroup($user) {
return UserGroup::find(array('conditions' => 'user_id = ' . $user));
}
Twig中用于调用函数的行:
{% for member in getusergroup(staff.id) %}
{{ member.Group.name }}
{% endfor %}
我得到的错误:
'在' staff-> id'之前扫描错误解析时:SELECT [Models \ UserGroup]。* FROM [Models \ UserGroup] WHERE user_id = $ staff-> id(78)' (长度= 131)
正如您所看到的,它不是$staff->id
是一个整数,而是文本。
如何将实际ID发送给该功能?
顺便说一下,我正在使用twig与Phalcon结合并遵循本文中的说明:http://phalcontip.com/discussion/60/extending-volt-functions
答案 0 :(得分:2)
如果您在方法$user
内转储public static function getUserGroup($user)
,您将收到此 $ staff-&gt; id ,但实际上您需要 42 < / em>的
为了避免这个寄存器,Volt功能如下:
$volt->getCompiler()->addFunction('getusergroup', function ($resolvedArgs, $exprArgs) {
return 'Models\User::getUserGroup(' . $resolvedArgs . ')';
});
的更多信息