thinkphp模板中支持php的if else 判断标签

前段时间做的一个客户网站,因为使用了thinkphp。但是在使用过程中,发现不支持php原始的if else 标签。但是他自身也支持if标签,但是不是自己想要的那个效果,于是google了下,也没什么结果。有天在国外论坛闲逛的时候发现一篇文章实现原理核这个差不多。就拿到这里实现了下,实现了这个功能。 1.大家打开thinkphp 的目录,找到 

  ThinkPhp/Lib/Template/ThinkTemplate.class.php

大致在 411-412行那里 

}elseif('-' == $flag || '+'== $flag){ // 输出计算
            return  '<?php echo '.$flag.$name.';?>';
        }elseif(':' == $flag){ // 输出某个函数的结果
            return  '<?php echo '.$name.';?>';
        }elseif('~' == $flag){ // 执行某个函数
            return  '<?php '.$name.';?>';

这是没有修改之前的代码。 然后在这下面新添加一个 elseif 判断。吧自己需要的添加进去

     //新添加支持if标签
        }elseif(substr($tagStr,0,3) =='if '){
        	return '<?php if('.substr($tagStr,3).') : ?>';
        }elseif(substr($tagStr,0,7) =='elseif '){
        	return '<?php elseif('.substr($tagStr,7).') : ?>';
        }elseif(substr($tagStr,0,4) =='php '){
        	return '<?php '.substr($tagStr,4).'; ?>';
        }elseif($tagStr =='else'){
        	return '<?php else : ?>';
        }elseif($tagStr =='/if'){
        	return '<?php endif; ?>';
        	//end 

这是添加后的代码。 其实就是判断 $tagStr这个。 亲们去代码里面实现下。还是不是支持了嗯。 咱们先去Runtime看下是不是添加的已经支持了呢

{if $userinfo[username]}
    <li class="list"><a href="__APP__/user/logout">退出</a></li>
    <li class="list"><a href="__APP__/User/">用户名: {$userinfo['username']} </a></li>
{else}
    <li><a href="__APP__/User/login">登陆</a></li>
    <li><a href="__APP__/User/regiest">注册</a></li>
{/if}

上面是模板里面的写的代码 来看Runtime Cach里面解析之后的

<?php if($userinfo[username]) : ?>
		<li class="list"><a href="__APP__/user/logout">退出</a></li>
		<li class="list"><a href="__APP__/User/">用户名: <?php echo ($userinfo['username']); ?> </a></li>
<?php else : ?>
		<li><a href="__APP__/User/login">登陆</a></li>
		<li><a href="__APP__/User/regiest">注册</a></li>
<?php endif; ?>

就是之前一直的php解析模式了!

相关文章

已有 5 条评论
  1. Numb

    您好,
    我是淘宝网的工作人员
    您在淘宝网订购的(安娜新版充气娃娃)已经到达本市,
    我们是给您送到您府上还是给你送到您工作单位?
    我们会绝对保密,
    请相信我们的职业操守,
    据我们这的接线人员说,
    您已经是第五次购买我们的这款产品,
    所以我们会适当给您打折,
    另外您要求我们赠送的美国纯进口春药也已经包在自我安慰器的包装袋里了!
    请您及时收取您定制的产品!
    谢谢!祝您愉快!

    Numb 回复
    1. Numb

      @Numb

      您好,
      我是淘宝网的工作人员
      您在淘宝网订购的(安娜新版充气娃娃)已经到达本市,
      我们是给您送到您府上还是给你送到您工作单位?
      我们会绝对保密,
      请相信我们的职业操守,
      据我们这的接线人员说,
      您已经是第五次购买我们的这款产品,
      所以我们会适当给您打折,
      另外您要求我们赠送的美国纯进口春药也已经包在自我安慰器的包装袋里了!
      请您及时收取您定制的产品!
      谢谢!祝您愉快!

      Numb 回复
      1. Numb

        @Numb

        您好,
        我是淘宝网的工作人员
        您在淘宝网订购的(安娜新版充气娃娃)已经到达本市,
        我们是给您送到您府上还是给你送到您工作单位?
        我们会绝对保密,
        请相信我们的职业操守,
        据我们这的接线人员说,
        您已经是第五次购买我们的这款产品,
        所以我们会适当给您打折,
        另外您要求我们赠送的美国纯进口春药也已经包在自我安慰器的包装袋里了!
        请您及时收取您定制的产品!
        谢谢!祝您愉快!

        Numb 回复
  2. 新世纪娱乐城

    php代码的吧!

    新世纪娱乐城 回复
  3. PHP乐知博客

    我觉得这种写法更容易理解,那我就帮博主转载一下喽!

    PHP乐知博客 回复
发表新评论