2015-03-08 2 views
3

J'ai un contrôleur appelé RegisterController et vue d'index. Si je soumets le formulaire, il montre la page introuvable (404) erreur. Dans la même chose si je change la méthode à actionCreate au lieu de actionAddBasic, fonctionne bien. S'il vous plaît aidez-moi à résoudre le problème. Merci.L'action personnalisée dans le contrôleur ne fonctionne pas dans 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() 
     ]); 
    } 

} 

registre/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> 

Répondre

3

Je ne reçois pas l'avantage de créer une action séparée dans votre cas, mais l'erreur est ici:

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

addBasic doit être remplacé par add-basic.

Noms d'action transformés avec des tirets et des minuscules.

y compris également index.php dans l'URL est redondant, cela devrait être suffisant:

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

Ou même ce pour le même contrôleur:

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

Documentation officielle:

+0

je suis encore en train objet introuvable 404 –

+0

objet introuvable? Ou la page n'est pas trouvée? Afficher le texte d'erreur complet, trace sera utile aussi bien. – arogachev

+1

Merci mon ... Fonctionne très bien ... Changé pour 'action' => ['index.php/register/add-basic'] ..... si je mets 'action' => ['add-basic '] ne fonctionne pas .... Merci beaucoup .... –