thinkphp5 自定义标签

<?php
namespace app\backend\taglib;

use think\template\TagLib;

class Tytag extends TagLib {
 
  protected $tags   =  [
    // 标签定义: attr 属性列表 close 是否闭合(0 或者1 默认1) alias 标签别名 level 嵌套层次
    'textfield'     => ['attr' => 'label,name,value,help', 'close' => 0], //闭合标签,默认为不闭合
    'textareafield'     => ['attr' => 'label,name,value,help', 'close' => 0],
    'filefield'     => ['attr' => 'label,name,value,updir,ftype,help', 'close' => 0],
    'mulfilefield'     => ['attr' => 'label,name,value,updir,help', 'close' => 0],
    'submitfield'     => ['close' => 0],
  ];

  /**
   * text 表单
   * label: 表单标题
   * name: 表单name
   * value: 表单值
   * help: 表单说明
   */
  public function tagTextfield($tag) {
    $html = "<div class='form-group'>";
    $html .= "<div class='form-label'>".$tag['label']."</div> <div class='form-input'>";
    if (empty($tag['value'])) {
      $html .= "<input type='text' name='".$tag['name']."' placeholder='".$tag['label']."' value='' />";
    } else {
      $html .= "<input type='text' name='".$tag['name']."' placeholder='".$tag['label']."' value='";
      $html .= "<?php echo ".$tag['value']."?>";
      $html .= "' />";
    }
    if(!empty($tag['help'])) {
      $html .= "<div class='help-block'><img src='/backend/ui_tip.png' /><p>".$tag['help']."</p></div>";
    }
    $html .= "</div></div>";
   
    return $html;
  } 

  /**
   * textarea 表单
   * label: 表单标题
   * name: 表单name
   * value: 表单值
   * help: 表单说明
   */
  public function tagTextareafield($tag) {
    $html = "<div class='form-group'>";
    $html .= "<div class='form-label'>".$tag['label']."</div> <div class='form-input'>";
    if (empty($tag['value'])) {
      $html .= "<textarea name='".$tag['name']."' placeholder='".$tag['label']."'></textarea>";
    } else {
      $html .= "<textarea name='".$tag['name']."' placeholder='".$tag['label']."'>";
      $html .= "<?php echo ".$tag['value']."?>";
      $html .= "</textarea>";
    }
    if(!empty($tag['help'])) {
      $html .= "<div class='help-block'><img src='/backend/ui_tip.png' /><p>".$tag['help']."</p></div>";
    }
    $html .= "</div></div>";
   
    return $html;
  } 

  /**
   * 单图片,
   * label: 表单标题
   * name: 表单name
   * updir: 上传路径
   * value: 表单值
   * ftype: 上传类型: image, video
   * help: 表单说明
   */
  public function tagFilefield($tag) {
    $html = "<div class='form-group'>";
    $html .= "<div class='form-label'>".$tag['label']."</div> <div class='form-input media-picker'>";
    $html .= "<a href='javascript:void(0)' class='button media-picker-button' data-id='".$tag['name']."' id='".$tag['name']."_uploader'>";
    $html .= "<span>+</span>";
    if (empty($tag['value'])) {
      $html .= "<input type='hidden' name='".$tag['name']."' upload-path='".$tag['updir']."' value='' />";
    } else {
      $html .= "<input type='hidden' name='".$tag['name']."' upload-path='".$tag['updir']."' value='";
      $html .= "<?php echo ".$tag['value']."?>";
      $html .= "' />";
    }
    $html .="</a>";
    if(!empty($tag['help'])) {
      $html .= "<div class='help-block'><img src='/backend/ui_tip.png' /><p>".$tag['help']."</p></div>";
    }
    $html .= "<ul class='clearfix image-list'>";
    if(!empty($tag['value'])) {
      // 这里不能简单的用if (empty($tag['value'])) 判断,因为$tag['value']实际上是字符串 比如$model['logo'],所以要使用模板标签解析后判断
      $html .= '{if '.$tag['value'].' != ""}';
      if($tag['ftype'] == 'video') {
        $html .= "<li><video controls src='<?php echo ".$tag['value']."?>'></video><span class='delete-image'>✖</span></li>";
      } else {
        $html .= "<li><img src='<?php echo ".$tag['value']."?>' /><span class='delete-image'>✖</span></li>";
      }
      $html .= '{/if}';
    }
    $html .= "</ul></div></div>";
   
    return $html;
  } 

  /**
   * 多图片,多图片不考虑视频
   * label: 表单标题
   * name: 表单name
   * updir: 上传路径
   * value: 表单值
   * help: 表单说明
   */
  public function tagMulfilefield($tag) {
    $html = "<div class='form-group'>";
    $html .= "<div class='form-label'>".$tag['label']."</div> <div class='form-input media-picker'>";
    $html .= "<a href='javascript:void(0)' class='button media-picker-button' data-id='".$tag['name']."' id='".$tag['name']."_uploader' data-multiple='multiple'>";
    $html .= "<span>+</span>";
    if (empty($tag['value'])) {
      $html .= "<input type='hidden' name='".$tag['name']."' upload-path='".$tag['updir']."' value='' />";
    } else {
      $html .= "<input type='hidden' name='".$tag['name']."' upload-path='".$tag['updir']."' value='";
      $html .= "<?php echo ".$tag['value']."?>";
      $html .= "' />";
    }
    $html .="</a>";
    if(!empty($tag['help'])) {
      $html .= "<div class='help-block'><img src='/backend/ui_tip.png' /><p>".$tag['help']."</p></div>";
    }
    $html .= "<ul class='clearfix image-list'>";
    if(!empty($tag['value'])) {
      // 这里不能简单的用if (empty($tag['value'])) 判断,因为$tag['value']实际上是字符串 比如$model['logo'],所以要使用模板标签解析后判断
      $html .= '{if '.$tag['value'].' != ""}';
      $html .= "<li><img src='<?php echo ".$tag['value']."?>' /><span class='delete-image'>✖</span></li>";
      $html .= '{/if}';
    }
    $html .= "</ul></div></div>";
   
    return $html;
  } 

  public function tagSubmitfield() {
    $html = "<div class='form-group'>";
    $html .= "<div class='form-label'>&nbsp;</div> <div class='form-input'>";
    $html .= "<input type='submit' class='btn-submit' value='提 交' /></div></div>";
    return $html;
  }
  
  
}
?>

在config.php的template下新增

'taglib_pre_load' => 'app\backend\taglib\Tytag',

使用:

{tytag:textfield label="seo标题" name="seo_title" value="" /}

猜你喜欢

转载自blog.csdn.net/tang05709/article/details/85103512