【问题标题】:Smarty use foreach twice in templateSmarty 在模板中使用 foreach 两次
【发布时间】:2013-12-11 14:20:39
【问题描述】:

我有一个变量 $res 用于存储我的数据库中的一些值。 在我的模板中,我想多次将这个变量与 foreach 一起使用:

        {foreach $res as $r}
        <h1>{$r.name}</h1>
        {/foreach}


        {foreach $res as $r}
        <h1>{$r.image1}</h1>
        {/foreach}

渲染页面时仅显示第一个 foreach。如果我把第二个放在上面,那一个就会被渲染。还有 $r.$ 的值 我错过了什么吗?

问候 史蒂芬

【问题讨论】:

    标签: arrays foreach smarty


    【解决方案1】:

    您是否尝试过声明 foreach 的巧妙方法?

    {foreach item=r from=$res}
    

    【讨论】:

    • 嘿,这是 2.x 的声明方式。在 3.x 中,它和我最初发布的一样。无论如何,我发现当我以简单的方式而不是使用 pdo 建立数据库连接时它可以工作。
    • 您好 Steffen,感谢您的澄清。您可能希望将解决方案发布为对其他访问者的礼貌。
    【解决方案2】:

    首先我使用 smarty Example App 中给出的方式:

    // database object
      var $pdo = null;
      // smarty template object
      var $tpl = null;
      // error messages
      var $error = null;
    
      /* set database settings here! */
      // PDO database type
      var $dbtype = 'mysql';
      // PDO database name
      var $dbname = 'database';
      // PDO database host
      var $dbhost = 'localhost';
      // PDO database username
      var $dbuser = 'guestbook';
      // PDO database password
      var $dbpass = 'foobar';
    

    但是,在任何地方使用 foreach 语句两次都不起作用。 现在我用简单的方法来做:

    mysql_connect("localhost", "username", "foobar") or die(mysql_error());
    mysql_select_db("database") or die(mysql_error()); 
    

    这对我有用并解决了问题。 但请注意:如果您正在构建一个严肃的 Web 项目,那么这两种方法都不是真正安全的。当我完成其他东西的构建后,我会处理这个问题。不过,出于开发目的,我完全可以接受。

    【讨论】:

      猜你喜欢
      • 2012-06-19
      • 1970-01-01
      • 2012-01-11
      • 2011-01-17
      • 1970-01-01
      • 2017-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多