<?php
declare (strict_types = 1);

namespace app\admin\validate\v1;

class SysBannerValidate extends BaseValidate
{
    /**
     * 必须验证字段
     */
    protected $must = ['unique_label'];

    /**
     * 定义验证规则
     * 格式：'字段名' =>  ['规则1','规则2'...]
     *
     * @var array
     */
    protected $rule = [
        'id'           => 'require|integer',
        'language_id'  => 'require|integer',
        'at_platform'  => 'in:pc,mobile',
        'at_page'      => 'max:255',
        'unique_label' => 'max:64',
        'name'         => 'require|max:64',
        'desc'         => 'max:255',
        'recommend'    => 'in:0,1',
        'sort'         => 'integer',
        'status'       => 'in:-1,1'
    ];

    /**
     * 定义错误信息
     * 格式：'字段名.规则名' =>  '错误信息'
     *
     * @var array
     */
    protected $message = [
        'id.require'            => 'ID不能为空',
        'id.integer'            => 'ID必须是整数',
        'language_id.require'   => '语言ID不能为空',
        'language_id.integer'   => '语言ID必须是整数',
        'at_platform.in'        => '显示端口只能是pc或mobile',
        'at_page.max'           => '页面位置最多255个字符',
        'unique_label.max'      => '唯一标识最多64个字符',
        'name.require'          => '名称不能为空',
        'name.max'              => '名称最多64个字符',
        'desc.max'              => '描述最多255个字符',
        'recommend.in'          => '推荐只能是0或1',
        'sort.integer'          => '排序必须是整数',
        'status.in'             => '状态只能是-1或1'
    ];

    // 新增场景
    public function sceneAdd()
    {
        return $this->remove('id', 'require|integer')->append('unique_label', 'require');
    }

    // 编辑场景
    public function sceneEdit()
    {
        return $this->remove('language_id', 'require|integer');
    }
}
