解析错误:语法错误,意外“公共”(T_PUBLIC)

时间:2015-12-30 19:52:07

标签: yii

我查看了以前所有关于错误的帖子:

error - Parse error : syntax error, unexpected "public' (T_PUBLIC) at actionDelete, 

我仍然被卡住了。

这是我的代码

<?php

class QualityEntryController extends Controller
{
/**
 * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
 * using two-column layout. See 'protected/views/layouts/column2.php'.
 */
public $layout='//layouts/column2';

/**
 * @return array action filters
 */
public function filters()
{
    return array(
        'accessControl', // perform access control for CRUD operations
        'postOnly + delete', // we only allow deletion via POST request
    );
}

/**
 * Specifies the access control rules.
 * This method is used by the 'accessControl' filter.
 * @return array access control rules
 */
public function accessRules()
{
    return array(
        array('allow',  // allow all users to perform 'index' and 'view' actions
            'actions'=>array('index','view'),
            'users'=>array('*'),
        ),
        array('allow', // allow authenticated user to perform 'create' and 'update' actions
            'actions'=>array('create','update'),
            'users'=>array('@'),
        ),
        array('allow', // allow admin user to perform 'admin' and 'delete' actions
            'actions'=>array('admin','delete'),
            'users'=>array('admin'),
        ),
        array('deny',  // deny all users
            'users'=>array('*'),
        ),
    );
}

/**
 * Displays a particular model.
 * @param integer $id the ID of the model to be displayed
 */
public function actionView($id)
{
    $this->render('view',array(
        'model'=>$this->loadModel($id),
    ));
}

/**
 * Creates a new model.
 * If creation is successful, the browser will be redirected to the 'view' page.
 */
public function actionCreate()
{
    $model=new QualityEntry;
    {
    Yii::import('ext.multimodelform.MultiModelForm');

    $model=new QualityEntry;
    $QualityEntryDetails=new QualityEntryDetails;
    $validatedQualityEntryDetails =array();
    if(isset($_POST['QualityEntry']))
    {

        $model->attributes=$_POST['QualityEntry'];
        $model->part_name=0;
        if( MultiModelForm::validate($QualityEntryDetails,$validatedQualityEntryDetails,$deleteQualityEntryDetails)  )
        {
            $masterValues = array ('quality_entry_id'=>$model->id,'part_name'=>0,); 

             if (MultiModelForm::save($QualityEntryDetails,$validatedQualityEntryDetails,$deleteQualityEntryDetails,$masterValues))

         {                  
                            //$this->redirect(array('view','id'=>$model->id));
                          }

                      }
                        else
                        {
                                    print_r( MultiModelForm::errors());die;
                        }



    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);

    if(isset($_POST['QualityEntry']))
    {
        $model->attributes=$_POST['QualityEntry'];
        if($model->save())
            $this->redirect(array('view','id'=>$model->id));
    }

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

}


/**
 * Updates a particular model.
 * If update is successful, the browser will be redirected to the 'view' page.
 * @param integer $id the ID of the model to be updated
 */
    public function actionUpdate($quality_entry_id)
{
    $model=$this->loadModel($quality_entry_id);
    Yii::import('ext.multimodelform.MultiModelForm');

    $QualityEntryDetails=new QualityEntryDetails;
    $validatedQualityEntryDetails =array();

    $model->attributes=$_POST['QualityEntry'];
        $model->part_name=0;

        if($model->save())

        {
            $masterValues = array ('quality_entry_id'=>$model->id,'part_name'=>0,); 

             if (MultiModelForm::save($QualityEntryDetails,$validatedQualityEntryDetails,$deleteQualityEntryDetails,$masterValues))

         {                  
                            $this->redirect(array('view','id'=>$model->id));
                          }

        }
                        else
                        {
                                    print_r( MultiModelForm::errors());die;
                        }
}       
}   





    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);

    /*if(isset($_POST['QualityEntry']))
    {
        $model->attributes=$_POST['QualityEntry'];
        if($model->save())
            $this->redirect(array('view','id'=>$model->id));
    }

    $this->render('update',array(
        'model'=>$model,
    ));*/
    if(isset($_POST['QualityEntry']))
    {
        $model->attributes=$_POST['QualityEntry'];
        $model->part_name=0;
        //$model->updated_by=Yii::app()->session['id'];
        //$model->updated_at=date('Y-m-d H:i:s',time());
        //$model->operation=1;
        if($model->save())
        {

        if( MultiModelForm::validate($QualityEntryDetails,$validatedQualityEntryDetails,$deleteQualityEntryDetails)  )
                      {

                        $masterValues = array ('quality_entry_id'=>$model->id,'part_name'=>0,);              

                         if (MultiModelForm::save($QualityEntryDetails,$validatedQualityEntryDetails,$deleteQualityEntryDetails,$masterValues))
                         {



                    /*else
                    {
                                //print_r( MultiModelForm::errors());die;

                    }*/
                }

                        else
                        {
                                    print_r( MultiModelForm::errors());die;
                        }
            $this->redirect(array('view','id'=>$model->id));

                      }
        }
        }

                               $this->render('create',array(
                                 'model'=>$model,
                                 'QualityEntryDetails'=>$QualityEntryDetails,
                                 'validatedQualityEntryDetails' => $validatedQualityEntryDetails,
                                 //'DailyDownTimeMaster'=>$DailyDownTimeMaster,
                                 //'validatedDailyDownTimeMaster' => $validatedDailyDownTimeMaster,
                                 //'DailyRejectionMaster'=>$DailyRejectionMaster,
                                 //'validatedDailyRejectionMaster' => $validatedDailyRejectionMaster,
                               ));








/**
 * Deletes a particular model.
 * If deletion is successful, the browser will be redirected to the 'admin' page.
 * @param integer $id the ID of the model to be deleted
 */
public function actionDelete($id)
{
    $this->loadModel($id)->delete();

    // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
    if(!isset($_GET['ajax']))
        $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
}

/**
 * Lists all models.
 */
public function actionIndex()
{
    $dataProvider=new CActiveDataProvider('QualityEntry');
    $this->render('index',array(
        'dataProvider'=>$dataProvider,
    ));
}

/**
 * Manages all models.
 */
public function actionAdmin()
{
    $model=new QualityEntry('search');
    $model->unsetAttributes();  // clear any default values
    if(isset($_GET['QualityEntry']))
        $model->attributes=$_GET['QualityEntry'];

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

/**
 * Returns the data model based on the primary key given in the GET variable.
 * If the data model is not found, an HTTP exception will be raised.
 * @param integer $id the ID of the model to be loaded
 * @return QualityEntry the loaded model
 * @throws CHttpException
 */
public function loadModel($id)
{
    $model=QualityEntry::model()->findByPk($id);
    if($model===null)
        throw new CHttpException(404,'The requested page does not exist.');
    return $model;
}

/**
 * Performs the AJAX validation.
 * @param QualityEntry $model the model to be validated
 */
protected function performAjaxValidation($model)
{
    if(isset($_POST['ajax']) && $_POST['ajax']==='quality-entry-form')
    {
        echo CActiveForm::validate($model);
        Yii::app()->end();
    }
}
}

2 个答案:

答案 0 :(得分:0)

不是框架问题,你缺少一个结束括号来结束actionUpdate函数。

这会在下一行/即将发生的行中引发错误。

答案 1 :(得分:0)

在actionDelete开始之前,似乎你没有在actionUpdate别名的末尾结束}

尝试添加

$this->render('create',array(
                             'model'=>$model,
                             'QualityEntryDetails'=>$QualityEntryDetails,
                             'validatedQualityEntryDetails' => $validatedQualityEntryDetails,
                             //'DailyDownTimeMaster'=>$DailyDownTimeMaster,
                             //'validatedDailyDownTimeMaster' => $validatedDailyDownTimeMaster,
                             //'DailyRejectionMaster'=>$DailyRejectionMaster,
                             //'validatedDailyRejectionMaster' => $validatedDailyRejectionMaster,
                           ));

 } // add this for closing action ***************


/**
* Deletes a particular model.
* If deletion is successful, the browser will be redirected to the 'admin' page.
* @param integer $id the ID of the model to be deleted
*/
public function actionDelete($id)