Heim  >  Artikel  >  Backend-Entwicklung  >  Beispiel für die Verwendung einer Smarty-Loop-Verschachtelung, Beispiel für „analysis_php“.

Beispiel für die Verwendung einer Smarty-Loop-Verschachtelung, Beispiel für „analysis_php“.

WBOY
WBOYOriginal
2016-08-04 08:56:541020Durchsuche

Das Beispiel in diesem Artikel beschreibt die Verwendung der intelligenten Schleifenverschachtelung. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

test3.php:

<&#63;php
require "main.php";
$forum = array(
    array("category_id" => 1, "category_name" => "公告区",
      "topic" => array(
        array("topic_id" => 1, "topic_name" => "站务公告")
      )
    ),
    array("category_id" => 2, "category_name" => "文学专区",
      "topic" => array(
        array("topic_id" => 2, "topic_name" => "好书介绍"),
        array("topic_id" => 3, "topic_name" => "奇文共赏")
      )
    ),
    array("category_id" => 3, "category_name" => "电脑专区",
      "topic" => array(
        array("topic_id" => 4, "topic_name" => "硬件周边"),
        array("topic_id" => 5, "topic_name" => "软件讨论")
      )
    )
);
$tpl->assign("forum", $forum);
$tpl->display("test3.htm");
&#63;>

Die Beispiel-Schreibmethode ist wie folgt:

templates/test3.htm:

<html>
<head>
<title>循环嵌套测试</title>
</head>
<body>
<table width="200" border="0" align="center" cellpadding="3" cellspacing="0">
  <{section name=sec1 loop=$forum}>
  <tr>
    <td colspan="2"><{$forum[sec1].category_name}></td>
  </tr>
  <{section name=sec2 loop=$forum[sec1].topic}>
  <tr>
    <td width="25"> </td>
    <td width="164"><{$forum[sec1].topic[sec2].topic_name}></td>
  </tr>
  <{/section}>
  <{/section}>
</table>
</body>
</html>

test2.php:

<&#63;php
require_once('./include/db_fns.php');
include_once("./Smarty/libs/Smarty.class.php"); //包含Smarty类文件
$smarty = new Smarty(); //建立Smarty实例对象$Smarty
$smarty->template_dir = "./templates/dedecms";//设置模板目录
$smarty->compile_dir = "templates/templates_c"; //设置编译目录
$smarty->assign("template_url", "./");
$smarty->assign("$site_url", "http://www.php.net/");
$smarty->assign("$site_name", "文章管理系统");
$smarty->left_delimiter = "<{"; //设置左边界符
$smarty->right_delimiter = "}>"; //设置右边界符
$db_conn = db_connect();
$query = "SELECT cat_ID,cat_name FROM categories ORDER BY cat_ID DESC";
$result = mysql_query($query);
$i = 5;
while(($row = mysql_fetch_array($result)) && $i > 0)
{
        $query2="SELECT ID, post_title, post_date
                FROM post
                WHERE post.post_category =$row[cat_ID]
                AND post_status <> 'unpbulish'
                ORDER BY post_date DESC";
        $result2=mysql_query($query2);
        $i = 5; 
        while(($row2 = mysql_fetch_array($result2)) && $i > 0)
        {
            $row2[post_date]=date('m-d',strtotime($row2[post_date]));
            $category = array("cat_ID"=>"$row[cat_ID]","cat_name"=>"$row[cat_name]",
            "post"=>array("ID"=>"$row2[ID]",
            "post_title"=>"$row2[post_title]" ,
            "post_category"=>"$row2[post_category]" ,
            "post_date"=>"$row2[post_date]"));
            $i--;
        }
}
$smarty->assign("forum", $category);
$smarty->display("test2.htm");
&#63;>

test2.htm:

<html>
  <head>
  <title>嵌套循环测试</title>
  </head>
  <body>
  <table width="200" border="0" align="center" cellpadding="3" cellspacing="0">
  <{section name=sec1 loop=$forum}>
      <tr>
      <td colspan="2"><{$forum[sec1].cat_id}></td>
      </tr>
        <{section name=sec2 loop=$forum[sec1].post}>
          <tr>
          <td width="25"> </td>
          <td width="164"><{$forum[sec1].post[sec2].post_title}></td>
          </tr>
        <{/section}>
  <{/section}>
  </table>
</body>
</html>

test4.php:

<&#63;php
require "main.php";
$my_array = array(
array("value" => "0"),
array("value" => "1"),
array("value" => "2"),
array("value" => "3"),
array("value" => "4"),
array("value" => "5"),
array("value" => "6"),
array("value" => "7"),
array("value" => "8"),
array("value" => "9"));
$tpl->assign("my_array", $my_array);
$tpl->display('test4.htm');
&#63;>

Die Vorlage ist wie folgt geschrieben:

templates/test4.htm:

<html>
<head>
<title>横向重复表格测试</title>
</head>
<body>
<table width="500" border="1" cellspacing="0" cellpadding="3">
<tr>
<{section name=sec1 loop=$my_array}>
<td><{$my_array[sec1].value}></td>
<{if $smarty.section.sec1.rownum is div by 2}>
</tr>
<tr>
<{/if}>
<{/section}>
</tr>
</table>
</body>
</html>

Der entscheidende Punkt ist die Smarty-Variable $smarty.section.sec1.rownum. In der Abschnittsschleife erhält diese Variable den Indexwert beginnend bei 1. Wenn rownum also durch 2 geteilt werden kann, wird 757b16e6a07cbf12935f17c1e1d1d9f0< ;tr> bewirkt, dass die Tabelle die Spalten wechselt (Achtung! fd273fcf5bcad3dfdad3c41bd81ad3e5 steht vorne und a34de1251f0d9fe1e645927f19a896e8 hinten). Die Zahl 2 ist also die Anzahl der Datensätze, die wir in einer Spalte darstellen möchten. Sie können damit andere unterschiedliche Präsentationsmethoden ändern.

Die

-Operatoren haben folgendes :

eq, ne, neq, gt, lt, lte, le, gte, ge, ist gerade, ist ungerade, ist nicht gerade, ist nicht ungerade, not, mod, div by, even by, odd by

Beispiel:

<!--{if $bigsize ge '650'}-->
   <img src="photo/<!--{$photo}-->" border="0" width="650" class="product_photo" />
<!--{else}-->
    <img src="photo/<!--{$photo}-->" border="0" class="product_photo" />
<!--{/if}-->

Ich habe smarty in der Vergangenheit nicht oft verwendet, aber die Website eines Freundes musste in den letzten zwei Tagen geändert werden. Ich habe es ausprobiert und es ist ziemlich interessant.

Anleitung zur Aufnahme:

Die Funktion der Erfassungsfunktion besteht darin, die von der Vorlage ausgegebenen Daten in einer Variablen zu sammeln, anstatt sie auf der Seite auszugeben

Alle Daten zwischen {capture name="foo"} und {/capture} werden in der Variablen empfangen, die durch das Namensattribut der Funktion ($foo) angegeben wird

Die gesammelten Informationen können in der speziellen Variablen $smarty verwendet werden

Capture.foo erfasst beispielsweise die oben genannten Daten. Wenn die Funktion kein Namensattribut hat, wird „default“ verwendet

Jedes {capture} muss {/capture} entsprechen und die Capture-Funktion kann nicht verschachtelt werden.

Leser, die an weiteren Smarty-bezogenen Inhalten interessiert sind, können sich die speziellen Themen auf dieser Website ansehen: „Grundlegendes Tutorial für den Einstieg in Smarty-Vorlagen“, „Zusammenfassung der PHP-Vorlagentechnologie“, „Zusammenfassung der auf PHP-Datenbanken basierenden Fähigkeiten“. zu PDO“, „Zusammenfassung der Verwendung von PHP-Operationen und -Operatoren“, „Zusammenfassung der Fähigkeiten zur PHP-Netzwerkprogrammierung“, „Einführungs-Tutorial in die grundlegende PHP-Syntax“, „Einführungs-Tutorial in die objektorientierte PHP-Programmierung“, „Zusammenfassung der Verwendung von PHP-Strings (Strings)“, „Einführungs-Tutorial zum PHP-MySQL-Datenbankbetrieb“ und „Zusammenfassung allgemeiner Datenbankbetriebsfähigkeiten in PHP“

Ich hoffe, dass dieser Artikel für jedermann beim PHP-Programmdesign basierend auf Smarty-Vorlagen hilfreich sein wird.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn