1.对于后台这种有若干个分类,该分类下有多个属性,分类和属性都是可编辑的情况下,
(分类编辑)
(属性编辑)
2.像这样的问题,我是用,后台拼接html代码,再传到前台显示
(后台控制器代码例子)
public function attr_str_no_more($attr,$choose){//单选属性(id,title...),参数为表sp_product_attr_type(属性表)中的一行记录,返回该属性下的select
$attrs_list = M('Product_attrs')->where(array('type'=>$attr['id'],'is_delete'=>0))->order('list_index')->select();//指定类型下的所有属性集合
$str = '<tr><th>'.$attr['title'].'</th><td><select name="attr['.$attr['id'].'][]"><option value="0">请选择</option>';
if($choose){
foreach ($attrs_list as $ke=>$va){
foreach ($choose as $k=>$v){
if($v['attr_id']==$va['id']){
$is_show = 1;
break;
}else{
$is_show = 2;
}
}
switch($is_show){
case"1":
$str.='<option selected="selected" value="'.$va['id'].'">'.$va['title'].'</option>';
break;
case"2":
$str.='<option value="'.$va['id'].'">'.$va['title'].'</option>';
break;
}
}
} else{
foreach ($attrs_list as $ke=>$va){
$str.='<option value="'.$va['id'].'">'.$va['title'].'</option>';
}
}
$str.='</select></td></tr>';
return $str;
}
该例子是传入分类的id,然后遍历该分类下的属性,有选择过的,显示当前选择的。这样,显示和修改就是在同一段代码里,避免显示和修改要用两段代码来实现。