从伏特发送变量到自定义功能

时间:2016-08-10 17:56:46

标签: twig phalcon volt

我创建了一个可以从伏特访问的自定义功能。该函数似乎工作正常,但我无法管理将变量发送到函数。它将变量作为文本而不是其值发送。

树枝功能:

$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

1 个答案:

答案 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 . ')';
});

有关Extending Volt Functions

的更多信息