Yii2在控制器之前呈现寄存器形式

时间:2017-08-02 09:31:44

标签: 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>

我得到的是我的表单所在的Undefined variable: model文件中的错误register.php。这是用户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,
        ]);
    }

}

2 个答案:

答案 0 :(得分:0)

添加您的控制器操作,将帮助人们回答问题。试试<?= $this->render('/user/registration/register', [ 'model' => $model, ]) ?>

答案 1 :(得分:0)

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

相关问题