79 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
| <?php
 | |
| 
 | |
| namespace app\validate;
 | |
| 
 | |
| use think\Validate;
 | |
| 
 | |
| class Category extends Validate
 | |
| {
 | |
|     protected $rule =  [
 | |
|         'parent_id|父级分类'       => 'require|number',
 | |
|         'model_id|所属模型'  => 'require|number|gt:0',
 | |
|         'title|标题'       => 'require|max:100',
 | |
|         'description|描述' => 'max:255',
 | |
|         'route|路由' =>"routeValidate",
 | |
|         'category_key|标识' =>"alphaDash",
 | |
|     ];
 | |
| 
 | |
|     protected $message = [
 | |
|         'model_id'     => '所属模型必需选择',
 | |
|         'route.routeValidate'     => '路由不符合指定规范',
 | |
|         'route.unique'     => '路由已存在',
 | |
|     ];
 | |
| 
 | |
|     protected function routeValidate($value)
 | |
|     {
 | |
|         $chars =preg_replace('/\s+/','',
 | |
|             "/^(
 | |
|               
 | |
|                 [\/]{1} 
 | |
|                 
 | |
|                 (
 | |
|                 
 | |
|                 
 | |
|                 (
 | |
|                
 | |
|                 ([A-Za-z0-9_-]*[A-Za-z_-]+)
 | |
|                 |
 | |
|                 ([A-Za-z_-]+[A-Za-z0-9_-]*)
 | |
|                 )
 | |
|                 
 | |
|                 |
 | |
|                 
 | |
|                  (
 | |
|                 ([A-Za-z0-9_-]+[A-Za-z_-]+[A-Za-z0-9_-]+)
 | |
|                 |
 | |
|                 ([A-Za-z_-]+[A-Za-z0-9_-]+[A-Za-z_-]+)
 | |
|                 )
 | |
|                 
 | |
|                 )
 | |
|                 
 | |
|                 
 | |
|                 )+
 | |
|                 
 | |
|                $/");
 | |
| 
 | |
|         if (  preg_match($chars, $value)){
 | |
|             return true;
 | |
| 
 | |
|         }else{
 | |
| 
 | |
|             return "路由不符合指定规范";
 | |
| 
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     // edit 验证场景定义
 | |
|     public function sceneEdit()
 | |
|     {
 | |
|         $id =  input('id/d', 0);
 | |
|         return $this->append('route', 'unique:category,route,' .$id . '|unique:article,route'   )
 | |
|             ->append("category_key",'unique:category,category_key,' .$id );
 | |
|     }
 | |
|     public function sceneAdd()
 | |
|     {
 | |
|         return $this->append('route', 'unique:category,route|unique:article,route|unique:special_route,route')
 | |
|             ->append("category_key",'unique:category,category_key' );
 | |
|     }
 | |
| 
 | |
| } |