-2

必須フィールドを含むフォームがあり、1 つのフィールドはチェックボックスです。すべての検証エラーが表示されますが、チェックボックス フィールドからのエラーは表示されません。DebugKit-Plugin をインストールしたところ、検証エラーが発生することがわかりましたが、メッセージは表示されませんでした。

class Users extends AppModel {

public $name = 'Users';
public $validate = array(
    'email' => array(
        'notEmpty' => array(
            'rule' => 'notEmpty',
            'message' => 'Bitte geben Sie ihre Email-Adresse ein',
            'allowEmpty' => false,
        ),
        'isUnique' => array(
            'rule' => 'isUnique',
            'message' => 'Diese Adresse ist bereits angemeldet',
        ),
        'email' => array(
            'rule' => array('email',true),
            'message' => 'Bitte geben Sie eine gültige Email-Adresse ein',
            'allowEmpty' => false,
        ),
    ),
    'terms' => array(
            'rule' => array('comparison','!=',0),
            'message' => 'Sie müssen unseren Nutzungsbedingungen zustimmen',
            'allowEmpty' => false,
    ),
    );    
}

形:

<div class="right text-right" id="register_form">
    <?php
    echo $this->Form->create('Users', array('action' => 'register', 'inputDefaults' => array()));
    echo $this->Form->input('gender', array('label' => 'Anrede: &nbsp;', 'class' => 'inputField', 'options' => array('m' => 'Herr', 'f' => 'Frau')));
    echo $this->Form->input('first_name', array('label' => 'Vorname: ', 'class' => 'inputField'));
    echo $this->Form->input('last_name', array('label' => 'Nachname: ', 'class' => 'inputField'));
    echo $this->Form->input('email', array('label' => 'Email: ', 'class' => 'inputField'));
    echo $this->Form->input('terms', array('div' => true, 'type' => 'checkbox', 'value' => 0, 'label' => false, 'before' => ' <label for="UsersTerms">Ich akzeptiere die '.$this->Html->link('AGB', array('controller' => 'pages', 'action' => 'terms')).' </label>'));
    echo $this->Form->submit('Anmelden', array('class' => 'button'));
    echo $this->Form->end();
    ?>
</div>

コントローラ:

public function register() {
    if ($this->Auth->user())
        $this->redirect($this->referer('/'));
    if ($this->request->is("post")) {
        $this->Users->create();
        $this->Users->set(Sanitize::clean($this->request->data));
        #if ($this->Users->validates())
        #    die(debug($this->Users->validationErrors));
        $this->_hash = $this->Auth->password($this->Users->data['Users']['email']);
        $this->_password = $this->__randomString(8, 8);
        $this->Users->set('password', $this->Auth->password($this->_password));
        if ($this->Users->save()) {
            $this->Users->id = $this->Users->getLastInsertID();
            $this->_sendActivationMail();
            $this->Session->setFlash('An die angegebene Emailadresse wurde soeben ein Aktivierungslink versendet.', 'default', array('class' => 'yellow'));
            $this->redirect($this->referer());
        } else {
            $this->Session->setFlash('Ein Fehler ist aufgetreten', 'default', array('class' => 'red'));
        }
    }
}

「$this->Form->error('terms');」で試してみました しかし、この行をデバッグすると、エラーが発生した場合にのみ表示されます

<div class="error_message"></div>

CakePHP は最終バージョンです。4 時間からヘルプを検索していますが、Google には回答がありません。ありますか?

はじめまして、M.

4

1 に答える 1

-1

誰かが同じ問題を抱えている場合、私は私のものを解決できます:

問題は特殊文字「ü」でした。ファイルを ISO 8859-1 で保存しようとしましたが、UTF8 で保存する必要がありました。エラーメッセージが表示されるようになりました。

于 2013-01-31T06:53:55.350 に答える