Activeform数据使用Yii2在数据库中提交,不起作用

时间:2017-08-06 01:53:33

标签: yii2

我是yii2框架中的新手,当我提交我的Activeform数据以保存在数据库中时显示错误

  

未找到(#404)。

这个Activeform在不同的模型视图中提到。我的表单位于产品页面上,我只想对客户进行有关此产品的评论并保存在数据库中。

查看文件:detail.php:

const activeClass = (this.props.activeState === 1) ? "active": "";
// ...
<li className={`nav-item ${activeClass}`}>
  ...
</li>

控制器文件:TblFeedbackController.php

    <?php
    use yii\helpers\Html;
    use yii\widgets\DetailView;
    use yii\widgets\ActiveForm;

    /* @var $this yii\web\View */
    /* @var $model app\models\Product */

    $name = $result->name;

         $price = $result->price;
         $offerrate = 8;
         $offer = ($price / 100) * $offerrate;
         $offerprice = number_format($price - $offer, 2);

         $text = $result->Description;
         $list = explode(",", $text);
    ?>

    <div id="page-content" class="home-page">
    <div class="container">
        <div class="row">
            <div class="col-lg-5">
                <center>
                <?= Html::img(Yii::$app->urlManagerBackend->BaseUrl.'/'.$result->image, ['alt'=>'myImage','width'=>'300','height'=>'300', 'class' => 'img-responsive']) ?>
                <br/>
            <?= Html::button('ADD TO CART', ['class' => 'btn btn-success', 'id'=>'addcart']) ?>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <?= Html::button('BUY NOW', ['class' => 'btn btn-danger', 'id'=>'buynow']) ?>
            </center>
            </div>
            <div class="col-lg-7">
            <?php echo "<h5 style='color:#009933'>".$name."</h5>"?><br/>
            <?php
                echo "<ul>";
                foreach ($list as $lists)
                {
                    echo "<li class='liststyle'>".$lists."</li>";
                }
                echo "</ul>";
            ?><br/>
            <?php echo "<h6 style='color:#009933'>MobileShop Offer Price Rs: ".$offerprice."</h6>" ?>
            <?= Html::button('Rate and Review product', ['class' => 'btn btn-default', 'id'=>'review', 'data-toggle' => 'collapse', 'data-target' => '#demo']) ?>
            <div id="demo" class="collapse">

     <?php $form = ActiveForm::begin(['id' => 'reviewForm', 'action' => Yii::$app->urlManager->createUrl(['TblFeedback/create'])]); ?>
                        <?= $form->field($feedback, 'cust_name')->textInput() ?>
                        <?= $form->field($feedback, 'feedback')->textArea(['rows' => '2', 'cols' => '10'])?>
                        <?= $form->field($feedback, 'rating')->dropDownlist(['1' => '*', '2' => '* *', '3' => '* * *', '4' => '* * * *', '5' => '* * * * *']) ?>    
                            <div class="form-group">
                                <?= Html::submitButton('Save', ['id' => 'savebtn', 'class' => 'btn btn-default']) ?>
                           </div>
            <?php ActiveForm::end(); ?>
    </div>

    </div>
    </div>
    </div>
    </div>

模型文件:TblFeedback.php

    <?php

    namespace frontend\controllers;

    use Yii;
    use app\models\TblFeedback;
    use frontend\models\Product;
    use yii\web\Controller;
    use yii\web\NotFoundHttpException;
    use yii\filters\VerbFilter;

    class TblFeedbackController extends \yii\web\Controller
    {
        public function behaviors()
        {
            return [
            'verbs' => [
            'class' => VerbFilter::className(),
            'actions' => [
            'delete' => ['POST'],
            ],
            ],
            ];
        }

        public function actionIndex()
        {

            return $this->render('index');
        }


        public function actionCreate()
        {
            $feedback = new TblFeedback();

            if ($feedback->load(Yii::$app->request->post()) && $feedback->validate())
            {
                var_dump($feedback);
                die();
                $feedback->save();
                Yii::$app->session->setFlash('success', '<h5>Thanks for review!</h5>');
                return $this->redirect(['index']);
            }
            else {
                return $this->render('index',
                    ['feedback' => $feedback,
                 ]);
                Yii::$app->session->setFlash('error', 'Error Found!');
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

当部件为大写时,控制器操作的命名约定基于-分隔符,因此您应该使用

 <?php $form = ActiveForm::begin(['id' => 'reviewForm', 
         'action' => Yii::$app->urlManager->createUrl(['Tbl-feedback/create'])]); ?>

命名约定,对于控制器,它以小写字符开头。

所以你应该使用

   class tblFeedbackController extends \yii\web\Controller

      <?php $form = ActiveForm::begin(['id' => 'reviewForm', 
         'action' => Yii::$app->urlManager->createUrl(['tbl-feedback/create'])]); ?>

最后一个建议你可以使用urlHelper

use yii\helpers\Url;

      <?php $form = ActiveForm::begin(['id' => 'reviewForm', 
         'action' => Url::to(['tbl-feedback/create'])]); ?>