【问题标题】:Sending variable from volt to custom function将变量从伏特发送到自定义函数
【发布时间】:2016-08-10 17:56:46
【问题描述】:

我创建了一个自定义函数,我可以从 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

【问题讨论】:

    标签: twig phalcon volt


    【解决方案1】:

    如果您将$user 转储到您的方法public static function getUserGroup($user) 中,您将收到此$staff->id,但您实际上想要42 之类的东西。

    为了避免这种情况,请像这样注册 Volt 函数:

    $volt->getCompiler()->addFunction('getusergroup', function ($resolvedArgs, $exprArgs) {
        return 'Models\User::getUserGroup(' . $resolvedArgs . ')';
    });
    

    更多信息Extending Volt Functions

    【讨论】:

    • 我永远不会猜到这个逻辑,把所有的都放在引号里。但它就像一个魅力。感谢尼古拉
    • 这就是我们有文档的原因:)
    • 没有使用谷歌找到该页面,这就是为什么很多thanx ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    相关资源
    最近更新 更多