Для настройки рендера при входе через соцсети с использованием расширения dektrium/yii2-user в Yii2, вам понадобится выполнить несколько шагов.
1. Установите расширение dektrium/yii2-user, если вы еще этого не сделали. Выполните следующую команду через Composer в командной строке:
composer require dektrium/yii2-user
2. Подключите расширение в файле конфигурации приложения config/web.php
. Добавьте следующий код:
'modules' => [ 'user' => [ 'class' => 'dektriumuserModule', // Другие настройки модуля ], ],
3. Создайте папку views
в вашем приложении, если она еще не существует. Затем создайте папку user
внутри папки views
.
4. В папке 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', ], ], ]) ?>
5. Дополнительно, если вы хотите настроить форму для регистрации и восстановления пароля, вам необходимо создать файлы registration.php
и request-password-reset.php
в папке views/user
. Вы можете настроить эти файлы аналогично файлу login.php
.
6. Просмотр формы входа через соцсети через расширение 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
.
7. Не забудьте настроить данные для входа через социальные сети в файле конфигурации приложения 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.