2011-05-13 92 views
0

PHP中的某些内容,如果某个变量存在,我想显示内容。在php中模板化,不使用模板引擎

例如,对于目前的评论我要检查如果作者已经投票的这个答复,所以代码将东西如下所示:

<?php if (isset($replies)): ?> 
    <?php foreach ($replies as $reply): ?> 

     <?php if (isset($already_voted)): ?> 
      <?php foreach ($already_voted as $vote): ?> 

      // if vote['id'] == $reply['id'], echo what they have already voted 

      <?php endforeach; ?> 
     <?php endif; ?> 

    <?php endforeach; ?> 
<?php endif; ?> 

会是什么做的更简单的方法这个,不用像smarty那样使用臃肿的模板引擎?

(请不要评论...是的'PHP本质上是一个模板引擎'或任何沿着这些线的东西)。

+4

PHP基本上是啊,你打我! – 2011-05-13 13:59:22

+3

你当前的设置有什么问题?这正是我所推荐的。 – 2011-05-13 14:00:52

+0

当用户登录时显示此消息,当他们第一次登录时显示此消息可能会引起混淆...... etc – 2011-05-13 14:02:21

回答

2

我会推荐使用模板引擎(我推荐PHPTAL),但您已经非常专门地询问了一种不使用引擎的方法。你可以只是不是它打破了那么多的简化你有一点PHP代码:

<?php 
if (isset($replies)) { 
    foreach ($replies as $reply) { 

     if (isset($already_voted)) { 
     foreach ($already_voted as $vote) { 

    // if vote['id'] == $reply['id'], echo what they have already voted 

     } 
     } 

    } 
} 

当然,这几乎是同样的事情,你有什么,它只是使用更少的字符。通过缩进跟踪开放代码块。

请注意,至少根据我的理解,模板的重点是重用。您希望能够在尽可能多的页面上使用相同的模板或至少部分模板(例如宏)。对于一些静态内容,这可能并不总是可能,但这就是为什么关键词尽可能为。正如你应该使用任何代码一样,重复使用你能做的。

使用模板系统可以更轻松地将视图与逻辑分开。你可以创建php模板(就像你已经完成的那样),但是我认为它缺乏清晰性,并且在模板中处理比在以前更容易。在没有任何形式的系统的情况下创建可重复使用的模板也更加困难[引用需求]。你可以创建自己的作品,但已经有一些伟大的作品。

0

正如你指出的那样,PHP本身就是一个模板引擎,你想要做的事情可以用简单的if语句来完成。

或者,您可以创建一个函数来达到这个效果,例如WordPress模板标签。