drip5880 2016-07-15 12:57
浏览 6
已采纳

使用php为渲染把手创建帮助器

I have a big problem and I don't understand how to solve this. So I have a class for helper :

class IfCondHelper implements HelperInterface
{
public function execute(Template $template, HandlebarsContent $context, $args, $source)
{
    $parsed_args = $template->parseArguments($args);

    if (count($parsed_args) != 3) {
        throw new \InvalidArgumentException(
            '"IfCond" helper expects exactly three arguments.'
        );
    }

    switch ($context->get($parsed_args[1])) {
        case "==":
            return ($context->get($parsed_args[0]) == $context->get($parsed_args[2])) ? $source : false;
            break;
..............
     }
}

Now in my template I do :

{{#ifCond 2 '==' 2}} {{data.oUser.number}} {{/ifCond}}

The problem is that the template doesn't show the value of data.oUser.number whitch is 4 but show the code data.oUser.number whitout interprete them. The helper works fine, because if I do :

{{#ifCond 2 '==' 2}} <p>Test</p> {{/ifCond}} 

This works fine. Can you help me please ? Thx in advance and sorry for my english

  • 写回答

1条回答 默认 最新

  • dps69208 2016-07-15 13:13
    关注

    I found the error, need to do a supplimentaire render after call the helper

    return ($context->get($parsed_args[0]) == $context->get($parsed_args[2])) ? $template->render($context) : false;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大