Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
symfony细枝渲染动态细枝代码_Symfony_Twig - Fatal编程技术网

symfony细枝渲染动态细枝代码

symfony细枝渲染动态细枝代码,symfony,twig,Symfony,Twig,在我的symfony2行动中,我有: $twigCode = '<li>{{ data.value }}</li>'; //In database $datas = array(array( 'value' => 'line 1'), array( 'value' => 'line 2')); return $this->render( '...List.html.twig', array( 'twigCode' =&g

在我的symfony2行动中,我有:

$twigCode = '<li>{{ data.value }}</li>'; //In database
$datas = array(array( 'value' => 'line 1'), array( 'value' => 'line 2'));

return $this->render(
    '...List.html.twig',
    array(
        'twigCode' => $twigCode,
        'datas' => $datas
    )
);
$twigCode='
  • {{data.value}}
  • //在数据库中 $datas=array(数组('value'=>'line 1')、数组('value'=>'line 2'); 返回$this->render( “…List.html.twig”, 排列( “twigCode”=>$twigCode, 'datas'=>$datas ) );
    在我的小树枝模板中,我需要如下内容:

    <ul>
    {% for data in data %}
        {{ render({{ twigCode }}, {data: data}) }}
    {% endfor %}
    </ul>
    
      {%用于数据%中的数据} {{render({{twigCode}},{data:data}}} {%endfor%}
    预期:

    <ul>
        <li>line 1</li>
        <li>line 2</li>
    </ul>
    
    • 第1行
    • 第2行

    您必须使用细枝核心,或者可以自定义视图渲染

    检查下面的代码

    $loader = new Twig_Loader_Array(array(
    'index.html' => 'Hello {{ name }}!',
    ));
    $twig = new Twig_Environment($loader);
    
    echo $twig->render('index.html', array('name' => 'Fabien'));
    

    检查此处以获取文档:

    您可以在控制器中渲染和连接细枝片段:

    $templating = $this->container->get('templating');
    $someTwig = '';
    
    foreach ($datas as $data)
    {
        $someTwig .= $templating->render($twigCode, $data);
    }
    
    return $this->render('...List.html.twig', array('someTwig' => $someTwig));
    
    然后在树枝上:

    <ul>
        {{ someTwig | raw }}
    </ul>
    
    <ul>
    {% for data in data %}
        {{ render(twigCode, data) | raw }}
    {% endfor %}
    </ul>
    
    然后在树枝上:

    <ul>
        {{ someTwig | raw }}
    </ul>
    
    <ul>
    {% for data in data %}
        {{ render(twigCode, data) | raw }}
    {% endfor %}
    </ul>
    
      {%用于数据%中的数据} {{render(twigCode,data)| raw} {%endfor%}

    注意-可能“render”是twig的保留字,因此自定义twig函数可能需要不同的名称。

    我不明白您想实现什么,但您可以直接在模板中编写twig代码,而不是从控制器传递。我的twig代码在数据库中,由userOk编写,因此无法在twig模板中执行此操作?twig模板在执行时编译为php可执行文件,因此您不能以这种方式传递twig代码。因为twig引擎将其假定为文本。实际上,只要插入的片段已经由twig模板引擎“呈现”,就有可能(在这种情况下,它不需要进一步遵从)并通过“原始”过滤器进行传递,这样它就不会被编码。一种更简单的方法(来自此答案的代码)是使用模板服务。