2017-08-02 71 views
0

我想呈現我的註冊表單,但我認爲它是嘗試呈現它,而不通過控制器。我的形式是Yii2呈現控制器之前的註冊表格

<div class="modal fade login-modal" id="register-modal" role="dialog"> 
     <div class="position-center-center" role="document"> 
      <div class="modal-content"> 
       <strong><?= Yii::t('app', 'app.Registration') ?></strong> 
       <button class="close" data-dismiss="modal" aria-label="Close"> 
        <span aria-hidden="true">&times;</span> 
       </button> 
       <?php $this->render('/user/registration/register') ?> 
      </div> 
     </div> 
    </div> 

我所得到的是在register.php文件,其中我的方式是錯誤Undefined variable: model。這是用戶dektrium註冊。什麼是正確的方式來呈現我的表單?先謝謝你!

編輯有控制器:

<?php 

namespace frontend\controllers\user; 

use dektrium\user\events\ConnectEvent; 
use dektrium\user\events\FormEvent; 
use dektrium\user\events\UserEvent; 
use dektrium\user\Finder; 
use frontend\models\RegistrationForm; 
use dektrium\user\models\ResendForm; 
//use dektrium\user\models\User; 
use dektrium\user\traits\AjaxValidationTrait; 
use dektrium\user\traits\EventTrait; 
use Yii; 
use yii\filters\AccessControl; 
use yii\web\Controller; 
use yii\web\NotFoundHttpException; 
use GeoIp2\Database\Reader; 
use frontend\models\User; 
use dektrium\rbac\models\Assignment; 
use backend\models\UserGroup; 
use backend\models\CompanyInfo; 
use backend\models\Label; 
use dektrium\user\controllers\RegistrationController as BaseRegistrationController; 

class RegistrationController extends BaseRegistrationController { 

    public function actionRegister() { 
     $messageErr = ''; 
     if (!$this->module->enableRegistration) { 
      throw new NotFoundHttpException(); 
     } 
     /** @var RegistrationForm $model */ 
     $model = Yii::createObject(RegistrationForm::className()); 
     $event = $this->getFormEvent($model); 

     $this->trigger(self::EVENT_BEFORE_REGISTER, $event); 

     $this->performAjaxValidation($model); 
     $model->email_hash = "1"; 
     $messageToAdmin = ''; 
     $messageToUser = ''; 

     $companyInfo = CompanyInfo::findOne(1); 
     if(isset($_POST['register-form'])) { 
      if ($_SESSION['captcha']['code'] != $_POST['register-form']['captcha_code']) { 
       $messageErr = 'Грешен код'; 
      } else { 
       if ($model->load(Yii::$app->request->post()) && $model->register()) { 
        $user = User::find()->where('email = :email', ['email' => $model->email])->one(); 
        if ($companyInfo) { 
         $adminEmail = $companyInfo->email; 
        } else { 
         $adminEmail = Yii::$app->params['adminEmail']; 
        } 
        $userEmail = $model->email; 
        $subject = 'Нова регистрация'; 
        $swiftEmail = Yii::$app->mailer->compose() 
         ->setTo($adminEmail) 
         ->setFrom($userEmail) 
         ->setSubject($subject); 

        $swiftEmail2 = Yii::$app->mailer->compose() 
         ->setTo($userEmail) 
         ->setFrom($adminEmail) 
         ->setSubject($subject); 
        $message = 'Добре дошли'; 

        if (Yii::$app->system->sendAdminMailWhenReg()) { 
         $messageToAdmin = '<div style="max-width: 600px;">'; 
         $messageToAdmin .= '<img src="http://' . $_SERVER['SERVER_NAME'] . '/images/logo.png" alt="' . Yii::$app->name . '" style="display:block; margin: 0 auto;">'; 
         $messageToAdmin .= '<h3 style="text-align: center;">' . Yii::t('app','app.new registration') . '</h3>'; 
         $messageToAdmin .= '<table style="width: 100%;">'; 
         $messageToAdmin .= '<tr><td>' . Yii::t('app','app.email') . '</td><td>' . $user->email . '</td></td>'; 
         $messageToAdmin .= '<tr><td>' . Yii::t('app','app.username') . '</td><td>' . $user->username . '</td></td>'; 
         $messageToAdmin .= '<tr><td>' . Yii::t('app','app.names') . '</td><td>' . $user->profile->name . ' ' . $user->profile->secondname . ' ' . $user->profile->lastname . '</td></td>'; //имена 
         $messageToAdmin .= '<tr><td>' .Yii::t('app','app.phone') . '</td><td>' . $user->profile->phone . '</td></td>'; //телефон 
         $messageToAdmin .= '<tr><td>' . Yii::t('app','app.city') . '</td><td>' . $user->profile->city . '</td></td>'; //град 
         $messageToAdmin .= '<tr><td>' . Yii::t('app','app.postcode') . '</td><td>' . $user->profile->post_code . '</td></td>'; //пощеснки код 
         $messageToAdmin .= '<tr><td>' . Yii::t('app','app.address') . '</td><td>' . $user->profile->delivery_address . '</td></td>'; //адрес за доставка 
         $messageToAdmin .= '</table>'; 
         $messageToAdmin .= '<p>Уеб сайт <a href="http://' . $_SERVER['SERVER_NAME'] . '" target="_blank">' . $_SERVER['SERVER_NAME'] . '</a></p>'; 
         $messageToAdmin .= '</div>'; 
         $swiftEmail->setHtmlBody($messageToAdmin); 
         try { 
          $swiftEmail->send(); 
         } catch (Exception $ex) { 
          var_dump($ex); 
          die; 
         } 
        } 

        if (Yii::$app->system->sendUserMailWhenReg()) { 
         $messageToUser = '<div style="max-width: 600px;">'; 
         $messageToUser .= '<img src="http://' . $_SERVER['SERVER_NAME'] . '/images/logo.png" alt="' . Yii::$app->name . '" style="display:block; margin: 0 auto;">'; 
         $messageToUser .= '<h3 style="text-align: center;">' . Yii::t('app','app.welcome') . '</h3>'; 
         $messageToUser .= '<table style="width: 100%;">'; 
         $messageToUser .= '<tr><td>' . Yii::t('app','app.email') . '</td><td>' . $user->email . '</td></td>'; //имейл 
         $messageToUser .= '<tr><td>' . Yii::t('app','app.username') . '</td><td>' . $user->username . '</td></td>'; //потребителско име 
         $messageToUser .= '<tr><td>' . Yii::t('app','app.names') . '</td><td>' . $user->profile->name . ' ' . $user->profile->secondname . ' ' . $user->profile->lastname . '</td></td>'; //имена 
         $messageToUser .= '<tr><td>' . Yii::t('app','app.phone') . '</td><td>' . $user->profile->phone . '</td></td>'; //телефон 
         $messageToUser .= '<tr><td>' . Yii::t('app','app.city') . '</td><td>' . $user->profile->city . '</td></td>'; //град 
         $messageToUser .= '<tr><td>' . Yii::t('app','app.postcode') . '</td><td>' . $user->profile->post_code . '</td></td>'; //пощеснки код 
         $messageToUser .= '<tr><td>' . Yii::t('app','app.address') . '</td><td>' . $user->profile->delivery_address . '</td></td>'; //адрес за доставка 
         $messageToUser .= '</table>'; 
         $messageToUser .= '<p>Уеб сайт ' . Yii::$app->name . '</p>'; 
         $messageToUser .= '</div>'; 
         $swiftEmail2->setHtmlBody($messageToUser); 
         try { 
          $swiftEmail2->send(); 
         } catch (Exception $ex) { 
          var_dump($ex); 
          die; 
         } 
        } 
        /* 
         $ass = Yii::createObject([ 
         'class' => Assignment::className(), 
         'user_id' => $user->id, 
         ]); 
         $mas['Assignment']['items'] = array(); 
         $mas['Assignment']['items'][] = 'GroupOne'; 
         $mas['Assignment']['user_id'] = $user->id; 
         if ($ass->load($mas) && $ass->updateAssignments()) {} 

         $defGroup = UserGroup::find()->where('default_group = 1')->one(); 
         if($defGroup){ 
         $user->group_id = $defGroup->id; 
         } 

         $reader = new Reader(Yii::getAlias('@frontend/web/GeoLite2-City.mmdb')); 
         try{ 
         //$record = $reader->city(Yii::$app->request->userIP); 
         $record = $reader->city("93.210.15.68"); 

         } catch (Exception $ex) { 
         $record = ''; 
         } 

         if($record !== ''){ 
         $user->country = $record->country->name; 
         $user->country_iso_code = $record->country->isoCode; 
         $user->lat = $record->location->latitude; 
         $user->lng = $record->location->longitude; 
         }else{ 
         $user->country = 'English'; 
         $user->country_iso_code = 'EN'; 
         } */ 

        $user->group_id = 1; 
        $user->email_hash = md5($user->email); 
        $user->update(false); 


        $this->trigger(self::EVENT_AFTER_REGISTER, $event); 

        /* return $this->render('/message', [ 
         'title' => Yii::t('user', 'Your account has been created'), 
         'module' => $this->module, 
         ]); */ 

        return $this->redirect('/'); 
       } 
      } 
     } 

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

} 

回答

0

添加在你的控制器動作,將幫助人們回答這個問題。嘗試<?= $this->render('/user/registration/register', [ 'model' => $model, ]) ?>

0

使用 返回$ this-> redirect(['user/index']);

相關問題