Для настройки рендера при входе через соцсети с использованием расширения dektrium/yii2-user в Yii2, вам понадобится выполнить несколько шагов.
- Установите расширение dektrium/yii2-user, если вы еще этого не сделали. Выполните следующую команду через Composer в командной строке:
composer require dektrium/yii2-user
- Подключите расширение в файле конфигурации приложения
config/web.php
. Добавьте следующий код:
'modules' => [ 'user' => [ 'class' => 'dektriumuserModule', // Другие настройки модуля ], ],
- Создайте папку
views
в вашем приложении, если она еще не существует. Затем создайте папкуuser
внутри папкиviews
.
- В папке
views/user
создайте файлыlogin.php
иlogin-social.php
.
login.php
используется для отображения формы входа пользователя. В этом файле вы можете настроить необходимые поля формы, например, имя пользователя и пароль.
<?php use yiihelpersHtml; use yiibootstrapActiveForm; $this->title = 'Login'; $this->params['breadcrumbs'][] = $this->title; ?> <h1><?= Html::encode($this->title) ?></h1> <p>Please fill out the following fields to login:</p> <?php $form = ActiveForm::begin([ 'id' => 'login-form', 'options' => ['class' => 'form-horizontal'], 'fieldConfig' => [ 'template' => "{label}n<div class="col-lg-3">{input}</div>n<div class="col-lg-6">{error}</div>", 'labelOptions' => ['class' => 'col-lg-1 control-label'], ], ]); ?> <?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?> <?= $form->field($model, 'password')->passwordInput() ?> <?= $form->field($model, 'rememberMe')->checkbox([ 'template' => "<div class="col-lg-offset-1 col-lg-3">{input} {label}</div>n<div class="col-lg-6">{error}</div>", ]) ?> <div class="form-group"> <div class="col-lg-offset-1 col-lg-11"> <?= Html::submitButton('Login', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?> </div> </div> <?php ActiveForm::end(); ?>
login-social.php
- это шаблон для отображения кнопок для входа через социальные сети. Вам нужно будет создать кнопки для каждой социальной сети, для которой вы хотите разрешить вход. В примере ниже показано, как создавать кнопки для входа через Facebook и Google.
<?php use yiiauthclientwidgetsAuthChoice; use yiihelpersHtml; $this->title = 'Login'; $this->params['breadcrumbs'][] = $this->title; ?> <h1><?= Html::encode($this->title) ?></h1> <p>Please fill out the following fields to login:</p> <?= AuthChoice::widget([ 'baseAuthUrl' => ['/user/security/auth'], 'popupMode' => false, 'options' => ['class' => 'list-unstyled'], 'clients' => [ 'facebook' => [ 'class' => 'yiiauthclientclientsFacebook', 'clientId' => 'your-client-id', 'clientSecret' => 'your-client-secret', ], 'google' => [ 'class' => 'yiiauthclientclientsGoogle', 'clientId' => 'your-client-id', 'clientSecret' => 'your-client-secret', ], ], ]) ?>
- Дополнительно, если вы хотите настроить форму для регистрации и восстановления пароля, вам необходимо создать файлы
registration.php
иrequest-password-reset.php
в папкеviews/user
. Вы можете настроить эти файлы аналогично файлуlogin.php
.
- Просмотр формы входа через соцсети через расширение dektrium/yii2-user теперь настроен. Вы можете использовать метод
render()
в действиях вашего контроллера, чтобы отобразить файлы представления, которые мы создали ранее.
Например, в вашем действии контроллера SiteController.php
вы можете добавить следующий код:
public function actionLogin() { $model = new LoginForm(); if ($model->load(Yii::$app->request->post()) && $model->login()) { return $this->goBack(); } return $this->render('login', [ 'model' => $model, ]); }
Теперь, при доступе к маршруту site/login
, форма входа будет отображаться на основе файла login.php
, а кнопки социальных сетей будут отображаться на основе файла login-social.php
.
- Не забудьте настроить данные для входа через социальные сети в файле конфигурации приложения
config/web.php
. Замените'your-client-id'
и'your-client-secret'
соответствующими данными для каждой социальной сети, для которой вы хотите настроить вход.
'modules' => [ //.. 'user' => [ 'class' => 'dektriumuserModule', 'authClientCollection' => [ 'class' => 'yiiauthclientCollection', 'clients' => [ 'facebook' => [ 'class' => 'yiiauthclientclientsFacebook', 'clientId' => 'your-client-id', 'clientSecret' => 'your-client-secret', ], 'google' => [ 'class' => 'yiiauthclientclientsGoogle', 'clientId' => 'your-client-id', 'clientSecret' => 'your-client-secret', ], ], ], // Другие настройки модуля ], //.. ],
Этими шагами вы должны настроить рендер при входе через соцсети с использованием расширения dektrium/yii2-user в Yii2.