1

こんにちは皆さん、php と Yii フレームワークでウェブサイトを作成しています。今、管理モジュールを作成し、このモジュールでcrudを作成しましたが、レコードを作成できないようです。私が今持っているものは次のとおりです。

    public function actionCreate()
    {
        $model=new GamesValidator;

        // Uncomment the following line if AJAX validation is needed
        $this->performAjaxValidation($model);
        /*
        if(isset($_POST['ajax']) && $_POST['ajax']==='games-form')
        {
            echo CActiveForm::validate($model);
            Yii::app()->end();
        }
        */
        if(isset($_POST['GamesForm']))
        {
            die('GamesForm is set'); // just to see if GamesForm has some value! but website never shows this massege, it shows just new form, which is my problem.
/*
            $model->attributes=$_POST['GamesForm'];
            if($model->validate()){
                echo ('This is only a test');
                return;
            } else {
                echo ('There was some error!');
                return;
            }
*/
        }

        $this->render('create',array(
            'model'=>$model,
        ));
    }

しかし、何も表示されません。何も行われなかったように、web サイトに再び form.php が表示されます。ここに私のビューファイルからの小さなコードがあります:

<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'games-form',
    'enableAjaxValidation'=>true
)); ?>

<p class="note">Fields with <span class="required">*</span> are required.</p>

<?php echo $form->errorSummary($model); ?>
[..........................]

<div class="row buttons">
    <?php echo CHtml::submitButton('Submit'); ?>
</div>

<?php $this->endWidget(); ?>

</div><!-- form -->

申し訳ありませんが、長すぎて完全なコードを投稿できません。

何が間違っているのか教えていただけますか?検証モデルにエラーがあるかどうかを確認する方法は?

編集

問題のある場所を示しました!

4

1 に答える 1

3

簡単です、あなたは$model->save()あなたのcreate()方法に欠けています:-

// you'll have to remove the die() of course, otherwise the rest of the code won't be executed
if($model->validate()){
        echo ('This is only a test');
        // the next line is important to save records, we are passing false because validation is already done
        $model->save(false);
        return;
    } else {
        echo ('There was some error!');
        return;
    }

CActiveRecordのメソッドの詳細を参照してください。

編集

アプリで変更を確認するには、新しく作成されたレコードのビューを作成する必要があります。yii 自動生成コード (gii を使用) では、CDetailView を介して行われます。このビューに、モデルのインスタンスを渡すことができます。

于 2012-04-04T21:07:02.373 に答える