yii2表单在提交时显示语法错误

时间:2017-02-06 11:25:29

标签: php yii yii2

在表单模型中,我遇到此错误:

PHP分析错误 - yii \ base \ ErrorException 语法错误,意外“公共”(T_STRING),期待功能(T_FUNCTION)

在互联网上检查了它的解决方案并检查了我的代码,我无法找到任何语法错误。 在我的模型代码中:

<?php

namespace app\models;

use Yii;

use yii\base\Model;

class Contact extends \yii\db\ActiveRecord{

   public static function tableName()

   {

       return 'contact';

   }


   public function rules()

   {

       return [

           [['name','email','message'], 'required'],

           ['email', 'email'],

           [['name'],'string', 'max' => 50],

           [['email'], 'string', 'max' => 50],

           [['message'], 'string', 'max' => 255],

          

       ];

   }

}
?>

这是我的控制器代码:

<?php
namespace frontend\controllers;

use app\models\Contact;

use Yii;
use yii\base\InvalidParamException;
use yii\web\BadRequestHttpException;
use yii\web\Controller;
use yii\filters\VerbFilter;
use yii\filters\AccessControl;
use common\models\LoginForm;
use frontend\models\PasswordResetRequestForm;
use frontend\models\ResetPasswordForm;
use frontend\models\SignupForm;
use frontend\models\ContactForm;

/**
 * Site controller
 */
class SiteController extends Controller
{
    /**
     * @inheritdoc
     */
    public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'only' => ['logout', 'signup'],
                'rules' => [
                    [
                        'actions' => ['signup'],
                        'allow' => true,
                        'roles' => ['?'],
                    ],
                    [
                        'actions' => ['logout'],
                        'allow' => true,
                        'roles' => ['@'],
                    ],
                ],
            ],
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'logout' => ['post'],
                ],
            ],
        ];
    }

    /**
     * @inheritdoc
     */
    public function actions()
    {
        return [
            'error' => [
                'class' => 'yii\web\ErrorAction',
            ],
            'captcha' => [
                'class' => 'yii\captcha\CaptchaAction',
                'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
            ],
        ];
    }

    /**
     * Displays homepage.
     *
     * @return mixed
     */
    public function actionIndex()
    {
        return $this->render('index');
    }

    /**
     * Logs in a user.
     *
     * @return mixed
     */


    public function actionLogin()
    {
        if (!Yii::$app->user->isGuest) {
            return $this->goHome();
        }

        $model = new LoginForm();
        if ($model->load(Yii::$app->request->post()) && $model->login()) {
            return $this->goBack();
        } else {
            return $this->render('login', [
                'model' => $model,
            ]);
        }
    }

    /**
     * Logs out the current user.
     *
     * @return mixed
     */
    public function actionLogout()
    {
        Yii::$app->user->logout();

        return $this->goHome();
    }

    /**
     * Displays contact page.
     *
     * @return mixed
     */
    public function actionContact()
    {
        $model = new ContactForm();
        if ($model->load(Yii::$app->request->post()) && $model->validate()) {
            if ($model->sendEmail(Yii::$app->params['adminEmail'])) {
                Yii::$app->session->setFlash('success', 'Thank you for contacting us. We will respond to you as soon as possible.');
            } else {
                Yii::$app->session->setFlash('error', 'There was an error sending your message.');
            }

            return $this->refresh();
        } else {
            return $this->render('contact', [
                'model' => $model,
            ]);
        }
    }



    /**
     * Displays about page.
     *
     * @return mixed
     */
    public function actionAbout()
    {
        return $this->render('about');
    }

    /**
     * Signs user up.
     *
     * @return mixed
     */
    public function actionSignup()
    {
        $model = new SignupForm();
        if ($model->load(Yii::$app->request->post())) {
            if ($user = $model->signup()) {
                if (Yii::$app->getUser()->login($user)) {
                    return $this->goHome();
                }
            }
        }

        return $this->render('signup', [
            'model' => $model,
        ]);
    }

    /**
     * Requests password reset.
     *
     * @return mixed
     */
    public function actionRequestPasswordReset()
    {
        $model = new PasswordResetRequestForm();
        if ($model->load(Yii::$app->request->post()) && $model->validate()) {
            if ($model->sendEmail()) {
                Yii::$app->session->setFlash('success', 'Check your email for further instructions.');

                return $this->goHome();
            } else {
                Yii::$app->session->setFlash('error', 'Sorry, we are unable to reset password for the provided email address.');
            }
        }

        return $this->render('requestPasswordResetToken', [
            'model' => $model,
        ]);
    }

    /**
     * Resets password.
     *
     * @param string $token
     * @return mixed
     * @throws BadRequestHttpException
     */
    public function actionResetPassword($token)
    {
        try {
            $model = new ResetPasswordForm($token);
        } catch (InvalidParamException $e) {
            throw new BadRequestHttpException($e->getMessage());
        }

        if ($model->load(Yii::$app->request->post()) && $model->validate() && $model->resetPassword()) {
            Yii::$app->session->setFlash('success', 'New password saved.');

            return $this->goHome();
        }

        return $this->render('resetPassword', [
            'model' => $model,
        ]);
    }

    public function actionHello(){
        return $this->render('hello');
    }

    public function actionHello2($message){
        return $this->render('Hello2',['message' => $message,]);
    }

    public function actionForms()

   {

       $model = new Contact();

       if ($model->load(Yii::$app->request->post()) && $model->save()) {

           Yii::$app->session->setFlash('contactFormSubmitted');

           return $this->render('forms', [

               'model' => $model,

           ]);

       } else {

           return $this->render('forms', [

               'model' => $model,

           ]);

       }

   }






}

以下是查看代码:

<?php

use yii\helpers\Html;

use yii\bootstrap\ActiveForm;

$this->title = 'Contact Form';

?>

<h1><?= Html::encode($this->title) ?></h1>

<?php if (Yii::$app->session->hasFlash('contactFormSubmitted')): ?>

<div class="row">

   <div class="col-lg-5">

       <div class="panel panel-default">

           <div class="panel-heading">Message Sent</div>

           <div class="panel-body">

               <p><b>Name:</b> <?=$model->name?> </p>

               <p><b>Email:</b> <?=$model->email?> </p>

               <p><b>Message:</b> <?=$model->message?> </p>

           </div>

       </div>

       <div class="alert alert-success">

           Thank you for contacting us. We will respond to you as soon as possible.

       </div>

   </div>

</div>

   <?php else: ?>

<div class="row">

           <div class="col-lg-5">

               <?php $form = ActiveForm::begin(['id' => 'contact-form']); ?>

                   <?= $form->field($model, 'name') ?>

                   <?= $form->field($model, 'email') ?>

                   <?= $form->field($model, 'message')->textArea(['rows' => 6]) ?>

                  <div class="form-group">

                       <?= Html::submitButton('Submit', ['class' => 'btn btn-primary', 'name' => 'contact-button']) ?>

                   </div>

               <?php ActiveForm::end(); ?>

           </div>

       </div>

<?php endif; ?>

0 个答案:

没有答案