1

モデル User (テーブル tbl_user) を使用して、サイトに登録フォームを作成しました。そして、ルールによる必須フィールド。

しかし、テーブルにないフィールドの値をどのように処理すればよいでしょうか? つまり、チェックボックス: 「使用許諾契約に同意します。オプションが選択されていない場合、エラーをスローしますか?

User モデルに何を追加する必要があり、コントローラーでエラーを処理する方法は?

PS質問が非常にばかげている場合は申し訳ありません。しかし、私は Yii を初めて使用するので、少し混乱しています。

4

2 に答える 2

3

あなたは示されているようにそれを行うことができます

あなたのビューファイル

<div class="row rememberMe" id="CHECKBOX">
        <?php echo $form->checkBox($regForm,'agree'); ?>
        <?php echo $form->label($regForm,'agree'); ?>
        <?php echo CHtml::link("terms and Conditions",array('message/goodbye'));?>
        <?php echo $form->error($regForm,'agree'); ?>
    </div>

以下に示すように、cform モデルを拡張するフォームを作成します。

ビューのRegisterationFormモデルを渡します

$regForm =new RegistrationForm

そして、あなたの登録フォームでは、次のようにします

class RegistrationForm extends CFormModel
{
public $agree;

public function rules()
    {
       return array(
     array('agree', 'required', 'requiredValue' => 1, 'message' => 'You should accept term to use our service'),
);
}
public function attributeLabels(){
        'agree' => 'I agree the',
}
于 2013-06-19T10:06:08.470 に答える
1

属性をデータベースにバインドしたくない場合は、CFORM MODEL を使用するか、Cactive Record を使用できます。CFORM MODEL を使用した yiis のデフォルトの連絡先タブを確認できるデータベースとのやり取りがない場合は、CFORM Model を使用することをお勧めします。データだけを収集したい場合、データベースとのやり取りはありません。CFORM MODEL を使用できます。

データベースのどこにデータを保存したいのですか? データベース モデルにコピーして保存する必要があります。これは属性値を収集するためだけです。たとえば、これをアクティブなモデルと見なします。

$model=new User() //this extends Cactive record
$regForm=new Registerationform () // this extends CForm Model

今、モデルに保存したい場合は、このようにします

$model->attribute=$regForm->AttributeValue
$model->save(); 

このメソッドの使用は、データベース テーブルに追加のフィールドを変更または追加する必要がある場合に、CACTIVERECORD によって拡張されるモデル全体を変更する必要がないということだけです。CFORMMODEL モデルに属性を追加するだけで、上記のように実行できます。

于 2013-06-19T11:54:33.463 に答える