CakePHP: почему проверка не запускается? - PullRequest
1 голос
/ 19 июня 2010

Я начал изучать CakePHP, чтобы повысить свою производительность.Проблема в том, что я столкнулся с небольшой проблемой, которая заставила меня занять более часа - когда форма отправлена, она не проверяется.

Даже если я намеренно оставляю оба поля пустыми, это все равно сохраняети дает сообщение «ОК».

Надеюсь, кто-нибудь может помочь мне снова начать работу.Если кто-то знает активный CakePHP-форум, я был бы рад ссылке.

goods_controller.php

<?php
class GoodsController extends AppController {
 var $name = 'Goods';

  function index() {
    $this->set('goods',$this->Good->find('all'));
  }

  function view($id = NULL) {
    //list of fields+id, null meaning take all
    $this->set('good',$this->Good->read(NULL, $id));
  }

  function add() {
    //Is it not empty? Then lets go on and save the data  
    if(!empty($this->data)) {      
      $this->Good->Create();
        if($this->Good->save($this->data)){
          $this->Session->setFlash('Varen blev gemt succesfuldt');
          //$this->redirect(array('action'=>'index'));
        } else {
          $this->Session->setFlash('Varen kunne desværre ikke gemmes, prøv venligst igen!');
        }
    } 
  }

} 
?>

add.ctp

<h1>Add Post</h1>
<?php
  echo $form->create('Good', array('action'=>'add'));
  echo $form->input('headline_dk');
  echo $form->error('headline_dk');
  echo $form->input('text_dk');
  echo $form->error('text_dk');
  echo $form->end('Indsæt vare');
?>

goods.php

class Good extends AppModel {
  var $name = 'Good';

  var $validate = array(    
    'headline_dk' => array(
      'rule' => 'notEmpty',
      'message' => 'Angiv venligst en titel'
    ),

    'headline_dk' => array(
      'rule' => array('between', 5, 255),
      'message' => 'Titlen skal være mellem fem og 255 tegn'
    )

    'text_dk' => array(
    'required' => true,
    'message' => 'Angiv venligst en beskrivelse af varen'
    )
};

Ответы [ 2 ]

1 голос
/ 19 июня 2010

Вы назначаете несколько правил проверки для одного поля, но в вашей модели код var $validate имеет два назначения для 'headline_dk' ... вместо этого он должен выглядеть примерно так:

var $validate = array(
  'headline_dk' => array(
    'headline-rule-1' => array(
      'rule' => 'notEmpty',  
      'message' => 'Angiv venligst en titel'
    ),
    'headline-rule-2' => array(
      'rule' => array('between', 5, 255),  
      'message' => 'Titlen skal være mellem fem og 255 tegn'
    )  
  )
);

Возможно, это не единственная проблема, но это может привести к тому, что проверка не будет работать. См. Также эту страницу в документации .

0 голосов
/ 20 июня 2010

«Создать» в $this->Good->create(); должно быть в нижнем регистре.

Обновление: попробуйте этот синтаксис:

var $validate = array(    
    'headline_dk' => array(
        'between' => array(
            'rule' => array('between', 5, 255),
            'message' => 'Titlen skal være mellem fem og 255 tegn'
        )
    )
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...