`
chengxianju
  • 浏览: 260276 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

smarty中section循环

    博客分类:
  • php
阅读更多

smaty遇到了这种循环,用foreach就不行了,只有section了

<div class="mContentList">

<span><a href="#" target="_blank">巡检司令肌肤</a></span>

<span><a href="#" target="_blank">斯蒂芬懒得说</a></span>

</div>

<div class="mContentList">

<span><a href="#" target="_blank">巡检司令肌肤</a></span>

<span><a href="#" target="_blank">斯蒂芬懒得说</a></span>

</div>

<div class="mContentList">

<span><a href="#" target="_blank">巡检司令肌肤</a></span>

<span><a href="#" target="_blank">斯蒂芬懒得说</a></span>

</div>

<div class="mContentList">

<span><a href="#" target="_blank">巡检司令肌肤</a></span>

<span><a href="#" target="_blank">斯蒂芬懒得说</a></span>

</div>

 

我这样用的:

 

{section loop=$chugui name=bar step=2}
          <div class="mContentList">

               <span><a href="http://abc.com/fc0newscon_{$chugui[bar].Id}.html" target="_blank">{$chugui[bar].Second_Title}</a></span>

              <span><a href="http://abc.com/fc0newscon_{$chugui[$smarty.section.bar.index+1].Id}.html" target="_blank">{$chugui[$smarty.section.bar.index+1].Second_Title}</a></span> </div>
  {/section}

还比较方便,顺便记录一下section用法吧

 

1、循环一个简单的一维数组:
Example 7-30. Looping a simple array with {section}

<?php
    $data = array(1000,1001,1002);
    $smarty->assign('custid',$data);
?>

//customer和下面的foo可以随便命名,作用其实仅仅是一个index下标,用来引用数组中的元素
{section name=customer loop=$custid}    
  id: {$custid[customer]}<br />
{/section}
<hr />

{section name=foo loop=$custid step=-1}
  {$custid[foo]}<br />
{/section}

//输出
id: 1000<br />
id: 1001<br />
id: 1002<br />
<hr />
id: 1002<br />
id: 1001<br />
id: 1000<br />

2、不用assign数组直接在smarty中循环:
Example 7-31. {section} without an assigned array

//特别地设置了start,step属性用来控制循环
//$smarty.section.section的名字.index是一个特殊变量,用来显示当前循环的位置
{section name=foo start=10 loop=20 step=2}
  {$smarty.section.foo.index}
{/section}
<hr />
{section name=bar loop=21 max=6 step=-2}
  {$smarty.section.bar.index}
{/section}

//输出:
10 12 14 16 18
<hr />
20 18 16 14 12 10

4、遍历一个关联数组,嵌套的数组

<?php
$data = array(
          array('name' => 'John Smith', 'home' => '555-555-5555',
                'cell' => '666-555-5555', 'email' => 'john@myexample.com'),
          array('name' => 'Jack Jones', 'home' => '777-555-5555',
                'cell' => '888-555-5555', 'email' => 'jack@myexample.com'),
          array('name' => 'Jane Munson', 'home' => '000-555-5555',
                'cell' => '123456', 'email' => 'jane@myexample.com')
        );
$smarty->assign('contacts',$data);
?>

//section不用嵌套,因为只有一个数组,数组内部用$contacts[customer]得到
//每个数组,再用.键名来得到键值
{section name=customer loop=$contacts}
<p>
  name: {$contacts[customer].name}<br />
  home: {$contacts[customer].home}<br />
  cell: {$contacts[customer].cell}<br />
  e-mail: {$contacts[customer].email}
</p>
{/section}

The above example will output:

<p>
  name: John Smith<br />
  home: 555-555-5555<br />
  cell: 666-555-5555<br />
  e-mail: john@myexample.com
</p>
<p>
  name: Jack Jones<br />
  home phone: 777-555-5555<br />
  cell phone: 888-555-5555<br />
  e-mail: jack@myexample.com
</p>
<p>
  name: Jane Munson<br />
  home phone: 000-555-5555<br />
  cell phone: 123456<br />
  e-mail: jane@myexample.com
</p>
5、从数据库查询记录显示,实际上是显示二维数组,其实同上例一样
<?php
$sql = 'select id, name, home, cell, email from contacts '
      ."where name like '$foo%' ";
$smarty->assign('contacts', $db->getAll($sql));
?>

//结果:

<table>
<tr><th>&nbsp;</th><th>Name></th><th>Home</th><th>Cell</th><th>Email</th></tr>
{section name=co loop=$contacts}     //第一维
  <tr>
    <td><a href="view.php?id={$contacts[co].id}">view<a></td>   //第二维用.号来引用
    <td>{$contacts[co].name}</td>
    <td>{$contacts[co].home}</td>
    <td>{$contacts[co].cell}</td>
    <td>{$contacts[co].email}</td>
  <tr>
{sectionelse}
  <tr><td colspan="5">No items found</td></tr>
{/section}
</table>

6、嵌套的section
<?php

$id = array(1001,1002,1003);
$smarty->assign('custid',$id);

$fullnames = array('John Smith','Jack Jones','Jane Munson');
$smarty->assign('name',$fullnames);

$addr = array('253 N 45th', '417 Mulberry ln', '5605 apple st');
$smarty->assign('address',$addr);

$types = array(
           array( 'home phone', 'cell phone', 'e-mail'),
           array( 'home phone', 'web'),
           array( 'cell phone')
         );
$smarty->assign('contact_type', $types);

$info = array(
           array('555-555-5555', '666-555-5555', 'john@myexample.com'),
           array( '123-456-4', 'www.example.com'),
           array( '0457878')
        );
$smarty->assign('contact_info', $info);

?>

{section name=customer loop=$custid}
<hr>
  id: {$custid[customer]}<br />
  name: {$name[customer]}<br />
  address: {$address[customer]}<br />
  {section name=contact loop=$contact_type[customer]}
    {$contact_type[customer][contact]}: {$contact_info[customer][contact]}<br />
  {/section}
{/section}

The above example will output:

<hr>
  id: 1000<br />
  name: John Smith<br />
  address: 253 N 45th<br />
    home phone: 555-555-5555<br />
    cell phone: 666-555-5555<br />
    e-mail: john@myexample.com<br />
<hr>
  id: 1001<br />
  name: Jack Jones<br />
  address: 417 Mulberry ln<br />
    home phone: 123-456-4<br />
    web: www.example.com<br />
<hr>
  id: 1002<br />
  name: Jane Munson<br />
  address: 5605 apple st<br />
    cell phone: 0457878<br />

0
0
分享到:
评论

相关推荐

    smarty中section的使用

    在Smarty中,`section`是用于处理数组遍历的关键特性,尤其适用于展示列表或表格数据。本篇文章将深入讲解如何在Smarty模板中使用`section`以及其相关属性和变量。 首先,我们来看一个简单的索引数组的例子: ```...

    Smarty模板中的for循环

    然而,默认情况下,Smarty只提供了针对数组的循环功能(如`{foreach}`和`{section}`),这在某些场景下显得不够灵活。例如,如果需要根据一个整数值(而非数组)进行循环操作时,传统的Smarty语法就显得力不逮。这种...

    smarty的section嵌套循环用法示例

    Smarty的模板语言非常灵活,其中section是用于循环处理数组或对象集合的标签,特别适合在模板中实现数据的循环展示。本文将详细讲解Smarty中section标签的嵌套循环用法。 首先,我们需要理解什么是section标签。在...

    计算机前端-核心编程. Smarty12section控制步长、起始点、循环次数.avi

    计算机前端-核心编程. Smarty12section控制步长、起始点、循环次数.avi

    php smarty3.0+Smarty中文手册chm

    Smarty提供了丰富的内置插件,如`{foreach}`、`{section}`和`{capture}`等,用于处理循环、条件语句和变量捕获。此外,你可以自定义插件扩展其功能,比如自定义函数或过滤器。 6. **缓存机制** Smarty3.0的缓存...

    Smarty完全中文手册

    6. **循环与条件语句**:Smarty提供了类似于PHP的`{foreach}`、`{section}`循环以及`{if}`、`{elseif}`、`{else}`条件语句,方便在模板中控制结构。 7. **模板继承**:通过`extends`关键字,一个模板可以继承另一个...

    smarty完全中文手册

    Smarty提供了多种内置函数和控制结构,如`{if}`、`{foreach}`、`{while}`等,用于条件判断和循环操作。例如,你可以使用`{if}`检查一个变量是否为空,或者使用`{foreach}`遍历数组并输出每个元素。此外,还有`{...

    php中smarty区域循环的方法

    本文详细介绍了Smarty中foreach循环和section循环的使用方法和技巧。 首先,我们来看看foreach循环。foreach循环是一种通用的循环结构,用于遍历数组或对象,并为数组中的每个元素执行一组语句。在Smarty模板中,...

    Smarty_smarty_

    4. **内建函数**:除了修改器,还有许多内置函数,如`{section}`用于循环处理,`{if}`、`{elseif}`、`{else}`进行条件判断,`{include}`用来包含其他模板文件。 5. **自定义函数**:Smarty允许用户定义自己的函数,...

    smarty商品分页

    Smarty提供了`{section}`标签来循环处理数据,以及`{if}`、`{else}`、`{endif}`来判断条件。下面是一个简单的分页示例: ```html &lt;!-- 分页导航 --&gt; {if $current_page &gt; 1} $current_page - 1}"&gt;上一页 {/if} ...

    Smarty foreach控制循环次数的一些方法

    Smarty的foreach标签用于处理数组和对象的循环遍历,可以灵活地控制循环次数以及在循环过程中获取当前的次数、下标、是否是第一次或最后一次循环等信息。 首先,了解如何获取数组长度和判断数组个数是非常重要的。...

    smarty调用php常量

    - **{$smarty.section}和{$smarty.foreach}**:提供了循环迭代的机制,增强了模板的动态性。 - **{$smarty.template}**:显示当前使用的模板名称。 - **{$smarty.version}**:返回Smarty版本号。 - **{$smarty....

    Smarty中文使用手册

    - **section, sectionelse**: 循环数组。 - **strip**: 去除字符串开头和结尾的空白字符及换行符。 #### 五、自定义函数 - **assign**: 为模板变量赋值。 - **counter**: 计数器函数。 - **cycle**: 轮流使用一组...

    Smarty 最新的中文帮助文档

    4. **函数和插件**:Smarty提供了丰富的内置函数和插件,如`{date_format}`处理日期时间,`{section}`处理数组循环,开发者还可以自定义插件扩展功能。 5. **变量过滤**:使用`|filter_name`语法,可以对变量进行...

    smarty 3 中文手册

    - **{section},{sectionelse}**: 遍历多维数组。 - **{setfilter}**: 设置过滤器。 - **{strip}**: 移除空白字符。 - **{while}**: 循环。 #### 四、自定义函数 - **定义**: 用户可以根据需要定义自己的函数,...

    smarty中文手册.chm

    10. **模板设计模式**:Smarty还支持一些设计模式,如`{section}`用于循环数据集的分块显示,`{assign}`用于在模板内部定义变量。 11. **自定义函数**:如果内置的插件不能满足需求,开发者可以创建自己的模板函数...

    smarty中常用方法实例总结

    与foreach不同的是,section可以指定一个section名,并在数组的数组中进行嵌套循环。 例如,嵌套使用section可以这样表示: ```smarty $bookmarks = array(...); $categories = array(...); {section name='bm' ...

Global site tag (gtag.js) - Google Analytics