自定义标签库嵌套无法调用上层变量

浏览:428 发布日期:2016/02/26 分类:求助交流
模板: <think:nav fid="0" position="1" order="sort asc" name="data">
<li><a href="{$data.url}">{$data.name}</a>{$data.id}
<ul>
<think:nav fid="data.id" position="1" order="sort asc" name="data2">
<li><a href="{$data2.url}">{$data2.name}</a></li>
</think:nav>
</ul>
</li>
</think:nav>

在子循环里面 上层变量的值怎么弄都不能正确被导入,手册上的看几百遍了也没觉得哪里写错了。就是死活不行。搜了其它人遇到的相似问题,都没有一个靠谱的答案。求大神看看怎么回事。



内层循环接收到的永远是字符串,试过在fid=里面换成data['id'] $data['id'] {data['id'] } 等 ,均识别为字符串,且还会把单引号加个斜杠转义符,郁闷。


标签库代码:
/* 导航列表 */
public function _nav($tag, $content){
//echo $tag['fid'];
isset($tag['position'])?true:$tag['position'] = '';//懒得每个都验证为空啦。
$nav = D('Menu')->getMenu($tag['position'],$tag['fid'],$tag['state'],$tag['order']);
$tempValue = md5($tag['fid']);//生成唯一变量名,防止嵌套冲突
$parse = '<?php ';
$parse .= '$nav_'.$tempValue.' =\''.serialize($nav).'\';';
$parse .= '$nav_'.$tempValue.' = unserialize($nav_'.$tempValue.'); ?>';
//$parse .= '<volist name="nav_'.$tempValue.'" id="'.$tag['name'].'">';
$parse .= '<foreach name="nav_'.$tempValue.'" item="'.$tag['name'].'">';
$parse .= $content;
// $parse .= '</volist>';
$parse .= '</foreach>';
//$parse = str_replace("data[\\'id\\']","data['id']",$parse);
return $parse;
}
最佳答案
评论( 相关
后面还有条评论,点击查看>>