我正在尝试渲染我的注册表单,但我认为它是尝试渲染它而不通过控制器。我的表格是
<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">×</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,
]);
}
}
答案 0 :(得分:0)
添加您的控制器操作,将帮助人们回答问题。试试<?= $this->render('/user/registration/register', [ 'model' => $model, ]) ?>
答案 1 :(得分:0)
使用 返回$ this-&gt; redirect(['user / index']);