12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- <?php
- namespace app\sys\taglib;
- use Exception;
- use think\template\TagLib;
- class Auth extends TagLib
- {
- /**
- * 检测是否有改权限
- */
- protected $tags = [
- 'check' => ['attr' => 'name', 'close' => 1],
- 'for' => ['attr' => 'start,end,search,attr'],
- 'volist' => ['attr' => 'name,id,search,attr']
- ];
- /**
- * 权限判断
- */
- public function tagCheck(array $tag, string $content): string
- {
- if (empty($tag['name'])) throw new Exception('tag attr "name" is must:');
- $parse = "<?php \$permission = request()->grant; if(in_array('$tag[name]', \$permission)):?>";
- $parse .= $content;
- $parse .= "<?php endif;?>";
- return $parse;
- }
- public function tagFor(array $tag, string $content): string
- {
- $start = $tag['start'];
- $end = $tag['end'];
- $search = $this->autoBuildVar($tag['search']);
- $attr = $tag['attr'];
- $parse = '<?php ';
- $parse .= 'for($i='.$start.';$i<'.$end.';$i++):';
- $parse .= $search.' == $i?$select=" '.$attr.'":$select=" ";';
- $parse .= ' ?>';
- $parse .= $content;
- $parse .= '<?php endfor; ?>';
- return $parse;
- }
- public function tagVolist(array $tag, string $content): string
- {
- $name = $tag['name'];
- $id = $tag['id'];
- $search = $this->autoBuildVar($tag['search']);
- $attr = $tag['attr'];
- $parse = '<?php ';
- $parse .= 'foreach($' . $name . ' as $key=>$'.$id.'):';
- $parse .= $search .' == $key?$select="' . $attr . '":$select="";';
- $parse .= ' ?>';
- $parse .= $content;
- $parse .= '<?php endforeach; ?>';
- return $parse;
- }
- }
|