0

テスト目的で、コントローラー内のフォームフィールドの検証に問題があります。

ExperiencehasManyを使用したモデルがありExperienceDetailます。ExperienceDetailに属しExperienceます。

FormHelper以下を含むフォームを使用してフォームを作成しました。

index.ctp

<?php
echo $this->Form->create('Experience', array('action' => 'index'));
echo $this->Form->input('Experience.date', array(
        'label' => array(
            'text' => 'Datum'),
        'type' => 'date',
        'dateFormat' => 'DMY',
        'monthNames' => false,
        'minYear' => date('Y') - 10,
        'maxYear' => date('Y')
        )
    );      
echo $this->Form->input('Experience.test');
echo $this->Form->input('ExperienceDetail.vertrekstation');
echo $this->Form->end('Verstuur!');
?>

で提供されるフィールドは他にもいくつかありますがExperienceDetail、これらはこの問題には関係ありません。

Experience.php

<?php 
class Experience extends AppModel {
    public $name = 'Experience';

    public $hasMany = 'ExperienceDetail';

    public $validate = array(
        'vertrekstation' => array(
            'rule' => 'notEmpty',
            'message' => 'Voer een vertrekstation in',
            'required' => true
        ),
        'test' => array(
            'rule' => 'notEmpty',
            'message' => 'Test mag niet leeg zijn!'
        )
    );
}
?>

ExperienceDetail.php

<?php
class ExperienceDetail extends AppModel {
    public $name = 'ExperienceDetail';

    public $belongsTo = 'Experience';

    public $validate = array(
        'vertrekstation' => array(
            'rule' => 'notEmpty',
            'message' => 'Voer een vertrekstation in'
        )
    );
}
?>

ExperiencesController.php

<?php 
class ExperiencesController extends AppController { 
public $helpers = array('Html', 'Form', 'Session');

public function index() {
    // $this->layout = 'default_orig'; 
    $this->set('title_for_layout', 'De OV-Ervaringenmeter!');

    // LOAD Model Carrier 
    $this->loadModel('Carrier');
    $this->set('carrier', $this->Carrier->find('list', array('order' => array('Carrier.name' => 'asc'))));

    // Check if form is allready filled
    if($this->request->is('post')) {

        $this->Experience->set($this->request->data);
        $this->Session->setFlash('No if or else statement is called');

        if ($this->Experience->validates()) {
            $this->Session->setFlash('Validates!');
        }
    }       

}
}
?>

問題は、フォームを送信してtest空のままにすると、モデルで設定した検証エラーが発生することです。しかし、vertrekstation空のままにすると、入力フィールドに属するエラーは表示されません。

何が間違っているのでしょうか。また、これらのエラーをどのように印刷できますか?

4

0 に答える 0