2

ムービーをデータベースに保存する前に、私の Yii コードでエラー summery が表示されません..何が問題なのですか?

フォームコード: http://jsfiddle.net/SRMzc/

それは actionCreate 関数です:

  public function actionCreateM()
    {
        $model=new Movie;

        if(isset($_POST['Movie']))
        {
            $model->attributes=$_POST['Movie'];

            $photos = CUploadedFile::getInstancesByName('photo');

            if (isset($_POST['Movie']['youtube_id'])){
                $model->youtube_id=$_POST['Movie']['youtube_id'];
            }



            if (isset($_POST['Movie']['poster_uri'])){
                $file=CUploadedFile::getInstance($model,'poster_uri');
                if(isset($file)){
                    $model->poster_uri = $model->short_title .'_poster.' . $file->extensionName;
                }
            }

            if($model->save()).......

ルール:

映画のモデルから

public function rules()
{
    // NOTE: you should only define rules for those attributes that
    // will receive user inputs.
    return array(
        array('title, short_title, year, imdb_rate, rate, cast, director, summary, release_date, duration, views, featured', 'required'),
        array('views, featured, available_status', 'numerical', 'integerOnly'=>true),
        array('title, short_title, genre, director', 'length', 'max'=>64),
        array('poster_uri', 'file', 'types'=>'jpg, gif, png', 'allowEmpty' => true),
        array('cast', 'length', 'max'=>256),
        array('year', 'length', 'max'=>4),
        array('lang', 'length', 'max'=>2),
        array('imdb_rate', 'length', 'max'=>3),
        array('rate', 'length', 'max'=>5),
        array('duration', 'length', 'max'=>11),
        // The following rule is used by search().
        // Please remove those attributes that should not be searched.
        array('title, short_title, views, featured, available_status', 'safe', 'on'=>'search'),
    );
}
4

2 に答える 2

3

エラー概要は ajax で動作します。フォーム定義で enableAjaxValidation を true に設定する必要があります。次に、アクション中の ajax 呼び出しを追跡し、モデルを検証してから、エラーをエコーする必要があります (詳細については、Yii ブログ デモ アプリの create アクションを確認してください)。

PHP でコードを検証する必要がある場合は、以下を試してください。

if(!$model->save())
{
    print_r($model->getErrors());
}

また

if(!$model->validate())
{
    print_r($model->getErrors());
}
else 
{
    $model->save();
}

検証コードは次のようになります

if(isset($_POST['ajax']) && $_POST['ajax']==='comment-form')
{
    echo CActiveForm::validate($comment);
    Yii::app()->end();
}

編集:- 検証の概要を取得するために ajax を有効にする必要はありません。同じように、このような php コードを使用できます。

if($model->validate())
{
    $model->save();
    //render some other view here
}
$this->render('Your_update_or_create_view');
于 2012-06-19T13:49:48.937 に答える
1

使用している間は$model->errorSummary()にする必要があると思います

<?php echo $form->errorSummary($model); ?>
于 2012-06-19T13:52:46.780 に答える