2

在将电影保存到数据库之前,我的 Yii 代码未显示错误摘要。有什么问题?

表单代码: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 博客演示应用程序中的创建操作以获取更多详细信息)。

如果您需要验证 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 回答