大佬教程收集整理的这篇文章主要介绍了php-Symfony2->如果请求的格式(例如移动电话)不存在,则呈现默认格式(例如html),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在Symfony2中,当尝试呈现index.mobile.twig时,当index.mobile.twig不存在时如何加载index.html.twig.而是获取“此模板不存在错误”.@H_696_1@
我相信答案就在于为Twig创建自定义加载器,但是我找不到关于它的任何文档,只是偶尔引用了它.@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{}
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,请注明来意。