2015-03-08 41 views
3

我有一個名爲RegisterController和index視圖的控制器。如果我提交表格,則顯示頁面未找到(404)錯誤。在相同的,如果我改變方法actionCreate而不是actionAddBasic,工作正常。請幫我解決這個問題。謝謝。控制器中的自定義操作在yii2中不起作用

RegisterController.php

<?php  
namespace app\controllers; 

use app\models\Address; 
use yii; 
use yii\filters\AccessControl; 
use yii\web\Controller; 
use yii\filters\VerbFilter; 
use app\models\BasicInfo; 
use app\models\User;  

/** 
* Class RegisterController 
* To Handle Registration Related Requests. 
*/ 
class RegisterController extends Controller 
{ 
    public function behaviors() 
    { 
     return [ 
      'access' => [ 
       'class' => AccessControl::className(), 
       'only' => ['addBasic'], 
       'rules' => [ 
        [ 
         'actions' => ['addBasic'], 
         'allow' => true, 
         'roles' => ['?'], 
        ], 
       ], 
      ], 
      'verbs' => [ 
       'class' => VerbFilter::className(), 
       'actions' => [ 
        'addBasic' => ['post'], 
       ], 
      ], 
     ]; 
    } 


    /** 
    * To Load Registration Page. 
    */ 
    public function actionIndex() 
    { 
     $user = new User(); 
     $basicInfo = new BasicInfo(); 
     $basicInfo->gender = 1; 
     $fileUpload = new FileUpload(); 
     $addressModel = new Address(); 
     return $this->render('index', [ 
      'userModel' => $user, 
      'basicInfoModel' => $basicInfo, 
      'fileUploadModel' => $fileUpload, 
      'addressModel' => $addressModel 
     ]); 
    } 

    public function actionAddBasic() 
    { 
     yii::trace('Inside AddBasic'); 
     return $this->render('index', [ 
      'userModel' => new User(), 
      'basicInfoModel' => new BasicInfo(), 
      'fileUploadModel' => new FileUpload(), 
      'addressModel' => new Address() 
     ]); 
    } 

} 

寄存器/ index.php文件:

<?php 
    use yii\helpers\Html; 
    use yii\helpers\ArrayHelper; 
    use yii\widgets\ActiveForm; 
    use app\models\MaritalStatus; 
    use app\models\ProfileFor; 

    ?> 
    <div class="form"> 
     <?php $form = ActiveForm::begin(['id' => 'form-signup-1', 'action' => ['index.php/register/addBasic']]); ?> 

        <div class="row"> 
         <?= $form->field($basicInfoModel, 'name')->textInput(['maxlength' => 25, 'placeholder' => 'Name']) ?> 
        </div> 
        <div class="row"> 
         <?= $form->field($userModel, 'email')->input('email', ['maxlength' => 30, 'placeholder' => 'Email']) ?> 
        </div> 
        <div class="row"> 
         <?= $form->field($userModel, 'mno')->input('text', ['maxlength' => 10, 'placeholder' => 'Mobile Number']) ?> 
        </div> 
<div class="row" style="float: right;"> 
        <?= Html::submitButton('Create', ['class' => 'btn btn-success']) ?> 
        <?= Html::resetButton('Reset', ['class' => 'btn btn-success']) ?> 
       </div>    
     <?php ActiveForm::end(); ?> 
    </div> 

回答

3

我不明白你的情況創建單獨行動的好處,但錯誤的是這裏:

'action' => ['index.php/register/addBasic'], 

addBasic應替換爲add-basic

用短劃線和小寫字母轉換的動作名稱。

而且包括網址index.php是多餘的,這已經足夠了:

'action' => ['register/add-basic'], 

甚至這爲同一控制器:

'action' => ['add-basic'], 

正式文件:

+0

不過我得到找不到對象404 – 2015-03-09 14:19:31

+0

找不到對象?或找不到頁面?顯示完整的錯誤文本,跟蹤也會有幫助。 – arogachev 2015-03-09 14:58:45

+1

感謝兄弟...它的工作很好......改成'行動'=> ['index.php/register/add-basic'] .....如果我把'action'=> ['add-basic ']不工作....非常感謝.... – 2015-03-09 15:11:03