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;
	}