ThinkPHP之模板

1.变量输出

参考http://document.thinkphp.cn/manual_3_2.html#var_output
字符串变量
在控制器中给变量赋值

$name = 'ThinkPHP';
$this->assign('name',$name);
$this->display();

在模板中使用

//{和$之间不能有任何的空格,否则标签无效
Hello,{$name}!

数组变量
在控制器中给变量赋值

$data['name'] = 'ThinkPHP';
$data['email'] = 'thinkphp@qq.com';
$this->assign('data',$data);

在模板中使用

Name:{$data['name']}
Email:{$data['email']}
Name:{$data.name}
Email:{$data.email}
<notempty name="data.name">
     {$data.name}
   <else />暂无
</notempty> <br />

data变量是一个对象(并且包含有name和email两个属性)

在模板中使用

Name:{$data:name}
Email:{$data:email}

Name:{$data->name}
Email:{$data->email}

实例:

从数据库中拿到数据,在控制器(服务器层)把数据转为树,返回给模板(视图)
控制层

 //读取仓库数据,返回一个集合
 $warehouseList = D('Warehouse')->field('id,name')->select();
 //集合转为数组
 $warehousesoptions= array_column($warehouseList,'name','id');
 //把数组转为select: id为$warehouseid选项为选中状态
 $warehousesoptions = option_selected($warehousesoptions,$warehouseid)
 //传到前台(View)
 $this->assign('warehousesoptions',$warehousesoptions );
/**
 * 数组生成selected选项
 * @param array $option array($k => $v);
 * @param string $selected 默认值
 * @return mixed|string
 */
function option_selected($option,$selected='')
{
    $_option = '';

    if (is_array($option))
    {
        foreach ($option as $k => $v)
        {
            $_option .= '<option value="'.$k.'">'.$v.'</option>';
        }
    }
    else
    {
        $_option = $option;
    }
    $_option = preg_replace('/value="'.$selected.'"/si','value="'.$selected.'" selected="selected"',$_option);

    return $_option;
}

视图层(View)

<select name="warehouseid" id="warehouseid" >
    <option value="">请选择</option>
    {$warehousesoptions}
</select>

2.内置标签

参考http://document.thinkphp.cn/manual_3_2.html#volist

posted on 2017-04-18 14:43  dreamstar  阅读(58)  评论(0编辑  收藏  举报