PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了php-Symfony2->如果请求的格式(例如移动电话)不存在,则呈现默认格式(例如html)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

在Symfony2中,当尝试呈现index.mobile.twig时,当index.mobile.twig不存在时如何加载index.html.twig.而是获取“此模板不存在错误”.@H_696_1@

我相信答案就在于为Twig创建自定义加载器,但是我找不到关于它的任何文档,只是偶尔引用了它.@H_696_1@

解决方法:@H_696_1@

答案包括扩展twig.loader.class并在发现特定的twig模板不存在之后并且在引发Exception之前创建一个附加步骤.@H_696_1@

第1部分-配置@H_696_1@

答案包括扩展twig.loader.class.@H_696_1@

>创建一个customloader.PHP来扩展Twig FilesystemLoader文件.@H_696_1@

namespace Acme\MyBundle\Twig\Loader;       
use Symfony\Bundle\TwigBundle\Loader\FilesystemLoader;
class CustomLoader extends FilesystemLoader{}

>修改您的config.yml以包括:@H_696_1@

 parameters: 
     twig.loader.class: Acme\YourBundle\Twig\Loader\name_of_your_class

第2部分-扩展课程@H_696_1@

扩展类是相当简单的.我需要修改方法是findTemplate($templatE).这是非常小的方法,您可能可以使用parent ::来更正确地扩展原始代码..但是,我选择完全覆盖它,并在无法找到模板错误之前包含以下代码:@H_696_1@

    if (false === $file || null === $filE) {

        switch( $template->get('format')){
            case 'mobile':
                    $template->set('format','html');
                    return self::findTemplate($template->getLogicalName());
                break;
        }

        throw new \Twig_Error_Loader(sprintf('Unable to find template "%s".', $logicalName), -1, null, $prevIoUs);

代码意识到文件存在之后,它会检查以确保移动设备是否是请求的格式.如果是这样,它将模板对象的格式设置为html,然后尝试使用Name.html.twig.您可以在这方面做更多的事情,但这解决了我的问题.@H_696_1@

大佬总结

以上是大佬教程为你收集整理的php-Symfony2->如果请求的格式(例如移动电话)不存在,则呈现默认格式(例如html)全部内容,希望文章能够帮你解决php-Symfony2->如果请求的格式(例如移动电话)不存在,则呈现默认格式(例如html)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

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