>

입력 필드 "description"을 포함하는 양식을 가진 cakephp 3.x 프로젝트가 있습니다. 이 필드의 최대 길이는 160 자입니다.

$validator
    ->allowEmpty('description')
    ->add('description', 'length', [
        'rule' => ['maxLength', 160],
        'message' => 'Products description cannot be longer than 160 characters'
    ]);

내 템플릿에는 작은 자바 스크립트가 있는데 사용자에게 이미 160 개의 문자 중 몇 개를 사용했는지 보여줍니다. .

160은 현재 하드 코딩되어 있습니다. 내 테이블이나 엔터티에서이 값을 얻을 수 있습니까? 140 of 160 characters used 와 같은 것 ?

$product->geMaxLength('description');
  • 답변 # 1

    이 작업을 수행하는 것이 올바른지 또는 최선의 방법인지 모르겠지만 Validator 를 검색 할 수 있습니다   Table 에서   Controller 의 개체  그런 다음 ValidatorSet 를 얻을  그리고 ValidatorRule  당신의 분야를 위해

    여기서 모델 이름이 Products 라고 가정합니다.

    당신의 ProductsController.php :

    $maxLength = $this->Products
        ->getValidator()       // gets the validator for the ProductsTable
        ->field('description') // gets a ValidationSet for a field
        ->rule('length')       // gets the Rule for the length 
        ->get('pass');         // gets the value of the maxLength
    
    

    그러면 값을 뷰에 전달할 수 있습니다

    $this->set('maxLength', $maxLength);
    
    

    보기에서 해당 값을 사용할 수 있도록

    $this->Form->control('description', ['label' => 'max '.$maxLength.' chars']);
    
    

    API 참조

    getValidator ()

    필드 ()

    규칙 ()

    get ()

  • 이전 java - 문자열에 숫자 저장 자원 낭비입니까?
  • 다음 swift - 정적 UITableView에 바닥 글을 어떻게 사용합니까?