1

私はケーキの初心者で、ブログのチュートリアルを終えました。今は簡単なことから始めようとしています。しかし、私は理解できない何かを手に入れました。モデルPersonalInformationで、テーブルフィールドのデータ検証を取得しました。

これは、$validate配列を使用した私のモデルです。

class PersonalInformation extends AppModel {

/**
 * Validation rules
 * @var $validate
 */
public $validate = array(
    "first_name" => array(
        "name"      => array(
            "rule"      => "validName",
            "message"   => 'Only alpha characters and "." (dots)',
        ),
    ),
    "last_name"  => array(
        "name"      => array(
            "rule"      => "validName",
            "message"   => 'Only alpha characters and "." (dots)',
        ),
    ),
    "birth_date" => array(
        "date"      => array(
            "rule"      => "date",
            "message"   => "Enter a valid date",
        ),
    ),
    "nickname"  => array(
        "alphanumeric"  => array(
            "rule"      => "alphaNumeric",
            "message"   => "Only alpha-numeric characters",
        ),
    ),
    "gender"     => array(
        "notEmpty"  => array(
            "rule"          => "notEmpty",
            "message"       => "Can't be empty",
        ),
    ),
);

} // end class

そしてこれは私のテーブルです:

CREATE TABLE `personal_informations`
(
`id` INT NOT NULL UNIQUE AUTO_INCREMENT,
`first_name` VARCHAR(45),
`last_name` VARCHAR(45),
`birth_date` DATE,
`nickname` VARCHAR(45),
`is_company` TINYINT DEFAULT 0 NOT NULL,
`picture_url` VARCHAR(255),
`gender` ENUM('m','f') NOT NULL,
`notes` TEXT,
`created` DATETIME,
`modified` DATETIME,
PRIMARY KEY (`id`)
) ENGINE=InnoDB CHARACTER SET=utf8;

CREATE INDEX `id_idx` ON personal_informations(id);

そしてここにビューがあります:

<!-- /PersonalInformations/add -->

<div class="">
<h2>Create a personal information</h2>
    <?php
    echo $this->Form->create();

    echo $this->Form->input( "PersonalInformation.first_name" );
    echo $this->Form->input( "PersonalInformation.last_name" );
    echo $this->Form->input( 
        "PersonalInformation.birth_date", 
        array( 
            "separator" => " - ", 
            "minYear" => date('Y') - 90,
            "maxYear" => date('Y')
    )
    );
    echo $this->Form->input( "PersonalInformation.nickname" );
    echo $this->Form->input( "PersonalInformation.is_company", array( "type" =>     "checkbox" ));
    echo $this->Form->input( "PersonalInformation.piture_url", array( "type" => "file"     ));
    echo $this->Form->radio( "PersonalInformation.gender", array( "m" => __("Male"), "f"     => __("Female")), array( "hiddenField" => false ));
    echo $this->Form->textarea( "PersonalInformation.notes" );

    echo $this->Form->end( "Done" );
    ?>
</div>

したがって、問題は、何らかの理由で「ニックネーム」が必要なことです。つまり、「ニックネーム」が空の状態で送信ボタンをクリックすると、「英数字のみ」と表示されます。また、「性別」については、何も選択されていない場合は何も表示されません。

他に投稿する必要があるものがあれば、お知らせください。

4

3 に答える 3

1

あなたのあだ名に

'nickname' => array(
            'required' => array(
                'rule' => array('notEmpty'),
                'message' => 'Nick name is required.'
            )
        )

性別:

ビューで

echo $this->Form->input('PersonalInformation.gender',array(
          'type'=>'select','empty' => '---- Select----',
          'class'=>'select',
          'options'=>$option_array
          ))

モデル検証配列:

'gender' => array(
            'required' => array(
                'rule' => array('notEmpty'),
                'message' => 'Can\'t be empty.'
            )
        )
于 2013-02-05T11:53:32.623 に答える
1

'allowEmpty' => trueニックネームのルールを追加します。

 "nickname"  => array(
        "alphanumeric"  => array(
            "allowEmpty"=> true,
            "rule"      => "alphaNumeric",
            "message"   => "Only alpha-numeric characters",
        ),
    ),
于 2013-02-05T14:53:30.437 に答える
0

ニックネームに を使ってみたことはありますrequired => falseか ? 詳細については、ドキュメントを参照してください。

"nickname"  => array(
    "alphanumeric"  => array(
        "rule"      => "alphaNumeric",
        "required" => false,
        "message"   => "Only alpha-numeric characters",
    ),
),
于 2013-02-05T11:46:30.833 に答える