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>