thinkphpフロントのカスタムラベルで渡されたIDにどのように対応しますか?
1371 ワード
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> I('get.id') $_GET['ID'] ID ID 。</span>
しかし、カスタムラベルを使うときにどのように渡すかというと、debugを開くと、生成されたファイルには固定IDは使えません.異なる欄で同じファイルを使う可能性があるので、DEBUGを閉じると内容が間違っています.
フロントコントローラのカスタムラベルで次のようにします.
フロントコントローラでまずIDを取得してgetパラメータに値を付与
$_GET['cid'] = $cate['id'];// ID
カスタムタグでは、ここで設定したgetパラメータをgetで取得するため、ここでは必ず$idのI('get.cid')の外側に二重引用符があることに注意し、DEBUGモードをオンにして生成したファイルを見ることができ、固定IDにならず、異なるIDの異なる内容を実現することができます.この問題は私を半日悩ませてやっと発見して、記録して同じく見失うあなたに便利です.
//
Public function _about($attr,$content){
$id = isset($attr['id'])?$attr['id']:"I('get.cid')";
$type = $attr['type'];
if($type == 'link'){
$str = '<?php
$link = M(\'cate\')->where(array(\'id\'=>'.$id.'))->find();
$link = get_cate_url($link);
echo $link;
?>';
}else{
$str ='<?php
$about = M(\'cate\')-> where(array(\'id\'=>'.$id.')) ->getField('.$type.');
echo $about; ?>';
}
$str .= $content;
return $str;
}