在.php模板中包含.twig基本模板

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了在.php模板中包含.twig基本模板脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我在网站上使用.twig模板但是我需要对几个视图中的逻辑非常狡猾.我不认为twig可以处理这个问题,而且它可以用 PHP一块蛋糕. (我不打算解释那是什么细节,只是在PHP知道它的简单,我实际上已经有了代码).问题是,我可以在.twig类型的基本模板或父模板中包含.PHP模板吗?

下面的示例(不起作用) – blah.htML.PHP一个扩展base.html.twig模板的模板…

/some/web/directory/bundlename/Resources/views/blah/blah.html.PHP

<?PHP $view->extend('::base.html.twig') ?>

<?PHP $view['slots']->set('tITle','Welcome to Nowhere!') ?>

<?PHP $view['slots']->start('body') ?>

    <div id="body">
        html stuff here,blah blah blah...
        <?PHP .... ?>
            complex PHP and html stuff,and so on...
        </PHP end....?> 
        you get the idea...
    </div>

<?PHP $view['slots']->stop() ?>

在浏览器上,上面的代码将基本模板中的所有.twig代码呈现为浏览器中的文本(I.E.它不会被模板引擎执行).

PS – 是的,我在app / config / config.yml中设置了.twig和.PHP

templating:      { engines: ['twig','PHP'] }

好的,这里有“复杂”的东西……
这是从在Symfony 1.4中编码的站点版本中获取的 – 它被升级到Symfony 2并且我们想要使用所有.twig

<?PHP foreach ($all_items as $item): ?>
<tr>
    <td valign="top">
        //<?PHP include_partial('global/item',array('item' => $item)) ?>

 <<< some code snipPEd out here >>>

    <td valign="top">
        <table border="1" width="100%">
        <?PHP echo $form->renderFormtag('memberitems/additem') ?>
        <?PHP echo $form['item_id']->render(array('value' => $item->getIid())) ?>
        <?PHP echo $form['user_id']->render(array('value' => 1)) ?>
        <?PHP echo $form['_csrf_token'] ?>
            <tr>
                <td width="50" colspan="2" align="center">Quantity<br><?PHP echo $form['quantity']->render() ?></td>
                <td width="50" colspan="2" align="center">Amount<br><?PHP echo $form['value']->render() ?></td>
                <td width="50" colspan="2" align="center"><input type="submit" value="Add"></td>
            </tr>
        </form>

    <<< here is a complex portion,we're declaring a VARiable with a value >>>
    <<< cant do this with twig - From what I kNow... >>>

        <?PHP // determine if item is in registry - if so display "currently Asking For:" ?>
        <?PHP $is_in_registry = false; ?>
        <?PHP foreach($member_items as $m_item): ?>
        <?PHP   if($m_item->getIid() == $item->getIid()): ?>
        <?PHP       if($is_in_registry == false): ?>
        <?PHP           $is_in_registry = true; ?>
                        <tr>
                            <td width="50" colspan="6" align="center"><br>Currently Asking For:</td>
                        </tr>
        <?PHP       endif ?>

        <?PHP echo $form->renderFormTag('memberitems/removeitem') ?>
        <?PHP echo $form['item_id']->render(array('value' => $item->getIid())) ?>
        <?PHP echo $form['user_id']->render(array('value' => 1)) ?>
        <?PHP echo $form['id']->render(array('value' => $m_item->getMIid())) ?>
        <?PHP echo $form['_csrf_token']->render() ?>

                        <tr>
                            <td width="50" colspan="4" align="center">
                                <?PHP echo $m_item->getMIqty()." @ ".$m_item->getMIval() ?>
                            </td>
                            <td width="50" colspan="2" align="center"><input type="submit" value="Remove"></td>
                        </tr>
                    </form>
        <?PHP   endif ?>
        <?PHP enDForeach ?>

解决方法

复杂的逻辑应该放在Symfony2的服务层中.对于所有不熟悉PHP的开发人员(例如前端开发人员),模板应该看起来干净整洁.

但是,我在该模板中看不到任何无法在Twig中完成的内容.这是用Twig编写的棘手部分来证明它:

{% set is_in_registry = false %}
{% for m_item in member_items %}

    {% if m_item.getIid == item.getIid %}
        {% if is_in_registry is false %}
            {% set is_in_registry = true %}
            <tr>
                {# you should use css for styling the td #}
                <td width="50" colspan="6" align="center"><br />Currently asking for:</td>
            </tr>
        {% endif %}

        {{ form.renderFormTag('memberitems/removeitem') }}
        {{ form.item_id.render({ value: item.getIid }) }}
        {{ form.user_id.render({ value: 1 }) }}
        {{ form.id.render({ value: m_item.getMIid }) }}
        {{ form._csrf_token.render }}

        <tr>
            <td width="50" colspan="4" align="center">
                {{ m_item.getMIqty ~ ' @ ' ~ m_item.getMIval }}
            </td>
            <td width="50" colspan="2" align="center"><input type="submit" value="Remove"></td>
        </tr>
        {# didn't notice your form opening tag. I'm assuming you're dynamically generating it #}
        </form>
    {% endif %}
{% endfor %}

脚本宝典总结

以上是脚本宝典为你收集整理的在.php模板中包含.twig基本模板全部内容,希望文章能够帮你解决在.php模板中包含.twig基本模板所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。