2011-12-29 4 views
1

저는 지난 몇 시간 동안이 문제로 어려움을 겪어 왔으며 신선한 눈이 도움이되는지 궁금합니다.CakePHP 유효성 검사 항상 true

모델

class User extends AppModel { 
public $name = 'User'; 
public $validate = array(
    'email' => array(
     'valid' => array(
      'rule' => 'email', 
      'message' => 'The email is not valid' 
     ), 
     'required' => array(
      'rule' => 'notEmpty', 
      'message' => 'Please enter an email' 
     ) 
    ) 
); 
} 

컨트롤러

class UserController extends AppController { 

var $uses = array('User'); 

function index(){ 
    $users = $this->User->find('all'); 
    $this->set(compact('users')); 
} 

public function add() { 
    $this->set('title_for_layout', 'Add new user'); 

    if(isset($this->data) && !empty($this->data)) { 
     $this->User->set($this->data); 
     $this->log($this->User->invalidFields(), "debug"); 

     if($this->User->validates()){ 
      if ($this->User->save($this->data)) { 

       $this->Session->setFlash("Added " . $this->data['User']['name']); 
       $this->redirect('index'); 
      } 
     } else { 
      $this->Session->setFlash('There are errors with your form submit, please see below.'); 
     } 

    } 
} 

}

보기

<?php 
    echo $this->Form->create('User'); 
    echo $this->Form->input('name', array('label' => 'Name')); 
    echo "<div class='clear'></div>"; 
    echo $this->Form->input('email', array('label' => 'Email')); 
    echo "<div class='clear'></div>"; 
    echo $this->Form->button('Reset', array('type' => 'reset')); 
    echo $this->Form->button('Add Useer', array('type' => 'submit')); 
    echo $this->Form->end(); 
?> 

하지만 이메일 유효하지 않은 필드를 결코? 나는 눈부신 것을 놓친 적이 있습니까?

그것은 어떤 차이가있는 경우, 이것은 필자가 앱에 직접 앉아 나던 그래서 개발 플러그인입니다 /하지만 응용 프로그램에서/플러그인

감사

편집 : 그래서 나는이 고민 했어요 지금은 여전히 ​​기쁨이 없습니다. 내가 (var_dump ($ this-> User)를 사용하여) 모델 정보를 출력 할 때, [validate] 배열은 비어 있습니다. 예를 들어 :

[validate] => Array 
    (
    ) 

[validationErrors] => Array 
    (
    ) 

임 내 $의 유효성을 배열을 선언 했음에도 불구하고,이 문제가 무엇이고 염치는 어떻게 든 덮어 쓰기? 누구든지 전에 이것을 보았습니까? 어떤 해결책?

+0

단순함과 관련하여 몇 가지 결함이 있지만 그 외의 것은 괜찮습니다. 한 가지만 : 모든 하위 규칙에 대해 항상 "last"=> true를 사용하십시오. 오, 그리고 create()가 누락되었습니다. – mark

+0

'last'=> true는 원할 경우 사용합니다 - 확실히 필요하지 않습니다 - 사용자에게 한 번에 한 필드가 아닌 한 번에 필드의 모든/모든 문제를 표시하는 것이 좋습니다. . – Dave

+0

어떤 버전의 cakephp를 사용하고 있습니까? – Dave

답변

0

젠장! 아주 간단합니다. 내가 http://book.cakephp.org/1.3/en/view/1114/Plugin-Models에서 제대로 요리 책을 읽는다면 그것은 당신이 당신의 플러그인 내에서 모델을 참조해야하는 경우, 당신은 점으로 구분 된 모델 이름으로 플러그인 이름을 포함 할 필요가

말해 줬어 것입니다. 따라서

..

var $uses = array('Plugin.User'); 

작품 ..이 다른 사람이 도움이되기를 바랍니다!

0
public $validate = array(
    'email' => array(
     'valid' => array(
      'rule' => array('email'), 
      'message' => 'The email is not valid' 
     ), 
     'required' => array(
      'rule' => array('notEmpty'), 
      'message' => 'Please enter an email', 
      'allowEmpty' => false 
     ) 
    ) 
); 

배열로 규칙을 추가하고 필요한 유효성 검사에 'allowEmpty'키를 false로 설정해보십시오.

+0

나는 이것을 시험해 보았다. 기쁨이 없었다. 시도 주셔서 감사합니다. 나는 그것의 플러그인이라는 사실과 관련이 있다는 것을 느끼고, Im은 기본 AppModel 클래스를 확장했다. –

+0

나는 플러그인 xD 부분을 놓쳤다. – elboletaire

관련 문제