Yii2-user
Re: Yii2-user
Замечательный модуль!
При регистрации через соц.сеть какой пароль задается пользователю?
При регистрации через соц.сеть какой пароль задается пользователю?
Re: Yii2-user
Всем привет.
Добавил поле в форму регистрации, а оно не сохраняется в БД.
Подскажите, пожалуйста в чем ошибка?
мой код, все делал по инструкции:
Добавил в БД новое поле 'field'.
Создал в моделях файл "RegisterForm.php"
Так же создал представление "register.php"
Сам модуль работает, отображается новое поле, но введенные данные в это поле не сохраняются(
Добавил поле в форму регистрации, а оно не сохраняется в БД.
Подскажите, пожалуйста в чем ошибка?
мой код, все делал по инструкции:
Код: Выделить всё
'user' => [
'class' => 'dektrium\user\Module',
'modelMap' => [
'RegisterForm' => 'app\models\RegisterForm',
],
],
Код: Выделить всё
'components' => [
'view' => [
'theme' => [
'pathMap' => [
'@dektrium/user/views' => '@app/views/user'
],
],
],
],
Создал в моделях файл "RegisterForm.php"
Код: Выделить всё
<?php
namespace app\models;
use dektrium\user\models\RegistrationForm as BaseRegistrationForm;
class RegistrationForm extends BaseRegistrationForm
{
/**
* @var string
*/
public $field;
/**
* @inheritdoc
*/
public function rules()
{
$rules = parent::rules();
$rules['fieldRequired'] = ['field', 'required'];
$rules['fieldLength'] = ['field', 'string', 'max' => 10];
return $rules;
}
}
Код: Выделить всё
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
/**
* @var yii\web\View $this
* @var yii\widgets\ActiveForm $form
* @var dektrium\user\models\User $user
*/
$this->title = Yii::t('user', 'Sign up');
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="row">
<div class="col-md-4 col-md-offset-4">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"><?= Html::encode($this->title) ?></h3>
</div>
<div class="panel-body">
<?php $form = ActiveForm::begin([
'id' => 'registration-form',
]); ?>
<?= $form->field($model, 'field') ?>
<?= $form->field($model, 'email') ?>
<?= $form->field($model, 'username') ?>
<?= $form->field($model, 'password')->passwordInput() ?>
<?= Html::submitButton(Yii::t('user', 'Sign up'), ['class' => 'btn btn-success btn-block']) ?>
<?php ActiveForm::end(); ?>
</div>
</div>
<p class="text-center">
<?= Html::a(Yii::t('user', 'Already registered? Sign in!'), ['/user/security/login']) ?>
</p>
</div>
</div>
Re: Yii2-user
Базовый класс RegistrationForm в методе регистрации все поля в $user присваявает. Там тоже добавьте.Tivos писал(а):Всем привет. Добавил поле в форму регистрации, а оно не сохраняется в БД.
- vitaxa_prog
- Сообщения: 306
- Зарегистрирован: 2011.06.06, 22:44
- Откуда: Волноваха
Re: Yii2-user
Наверное не в базовый класс добавить, а в своем классе RegistrationForm переопределить метод register().ElisDN писал(а):Базовый класс RegistrationForm в методе регистрации все поля в $user присваявает. Там тоже добавьте.Tivos писал(а):Всем привет. Добавил поле в форму регистрации, а оно не сохраняется в БД.
В принципе ничего нет невозможного.
— Вы думаете?
— Для человека. С интеллектом.
— Вы думаете?
— Для человека. С интеллектом.
- vitaxa_prog
- Сообщения: 306
- Зарегистрирован: 2011.06.06, 22:44
- Откуда: Волноваха
Re: Yii2-user
Отвечаю сам же на свой вопрос.vitaxa_prog писал(а): При попытке войти выдает ошибку 404. Если закомментировать строчкуКод: Выделить всё
'as backend' => 'dektrium\user\filters\BackendFilter',
То ошибка не появляется. Посмотрел код фильтра. Там просто проверка есть ли контроллер в массиве указанных.
Подскажите пожалуйста как решить эту проблему?
Плохо смотрел код фильтра!
Я так и не понял какую роль выполняет этот фильтр. Почему если текущий контроллер попадает в массив предопределенных контроллеров, то возвращаем 404 ошибку? Я не стал ломать голову над тем, что задумывал автор. Просто взял и написал свой фильтр с нужной мне логикой.
Все работает. Спасибо автору за модуль. За два дня копания в нем, пришло понимание, что это весьма неплохой фундамент для расширения.
В принципе ничего нет невозможного.
— Вы думаете?
— Для человека. С интеллектом.
— Вы думаете?
— Для человека. С интеллектом.
Re: Yii2-user
у этого модуля есть функция генерации пароля А как быть если на сайте есть две формы: в одной нужно ручками вносить пароль, а в другой нужно генерировать пароль?
Код: Выделить всё
'enableGeneratingPassword' => true,
Re: Yii2-user
как отключить подтвеждение мыла?
Re: Yii2-user
Код: Выделить всё
'enableConfirmation' => false,
Re: Yii2-user
Установил Yii2-user и Yii2-RBAC. Как сделать чтобы роль присваивалась при регистрации автоматически?
-
- Сообщения: 610
- Зарегистрирован: 2015.07.16, 10:50
Re: Yii2-user
попробуйте:Arroyo писал(а):Установил Yii2-user и Yii2-RBAC. Как сделать чтобы роль присваивалась при регистрации автоматически?
Код: Выделить всё
$role = Yii::$app->authManager->getRole('RoleName');
Yii::$app->authManager->assign($role, $user->getId());
Re: Yii2-user
Подскажите, при выходе из системы получаю ошибку:
Method Not Allowed (#405)
Method Not Allowed. This url can only handle the following request methods: POST.
Подозреваю, что надо $depends как то измениить. Юзаю такой код:
echo Menu::widget([
'items' => [
Yii::$app->user->isGuest ?
['label' => 'Sign in', 'url' => ['/user/security/login']] :
['label' => 'Sign out (' . Yii::$app->user->identity->username . ')',
'url' => ['/user/security/logout'],
'linkOptions' => ['data-method' => 'post']
],
['label' => 'Register', 'url' => ['/user/registration/register'], 'visible' => Yii::$app->user->isGuest]
],
]);
Заранее спасибо
Method Not Allowed (#405)
Method Not Allowed. This url can only handle the following request methods: POST.
Подозреваю, что надо $depends как то измениить. Юзаю такой код:
echo Menu::widget([
'items' => [
Yii::$app->user->isGuest ?
['label' => 'Sign in', 'url' => ['/user/security/login']] :
['label' => 'Sign out (' . Yii::$app->user->identity->username . ')',
'url' => ['/user/security/logout'],
'linkOptions' => ['data-method' => 'post']
],
['label' => 'Register', 'url' => ['/user/registration/register'], 'visible' => Yii::$app->user->isGuest]
],
]);
Заранее спасибо
Re: Yii2-user
Очистите web/assets и обновите страницу.
Re: Yii2-user
Папку очистил перезапустил - та же проблемаElisDN писал(а):Очистите web/assets и обновите страницу.
Сверху имеется:
<?php
use yii\helpers\Html;
use yii\widgets\Menu;
use app\assets\AppAsset;
AppAsset::register($this);
?>
Это массив depends в appasset:
public $depends = [
'yii\web\YiiAsset',
'yii\bootstrap\BootstrapAsset',
];
Re: Yii2-user
Странно, но такая ссылка заработала:ElisDN писал(а):Очистите web/assets и обновите страницу.
<a href="<?= Url::to(['/user/security/logout'])?>" data-method="post">Выход</a>
Я так понимаю, вы супергуру в yii, если не сложно, не могли бы вы прокомментировать, почему так работает, по другому нет?
Заранее спасибо!
Re: Yii2-user
Используйте yii\bootstrap\Nav вместо yii\widgets\Menu, так как у Menu нет опции linkOptions.kutuev93 писал(а):Я так понимаю, вы супергуру в yii, если не сложно, не могли бы вы прокомментировать, почему так работает, по другому нет?
Re: Yii2-user
Здравствуйте, возник еще один вопрос на основе данного модуля.ElisDN писал(а):Используйте yii\bootstrap\Nav вместо yii\widgets\Menu, так как у Menu нет опции linkOptions.kutuev93 писал(а):Я так понимаю, вы супергуру в yii, если не сложно, не могли бы вы прокомментировать, почему так работает, по другому нет?
Мне хотелось бы сделать авторизацию через всплывающее окно. Сейчас авторизация реализуется через экшен login.
Ничего пока умного не пришло в голову как:
1. В модальном окне тупо выдрать див, с полной формой
2. Перед этим создать модель $model = Yii::createObject(LoginForm::className());
Работает, но идея очень некрасивая, потому что я думаю:
1. Я уже завязал логику в вид
2. Возможно, будет уязвимое место на сайте
Потенциальное решение для себя:
Нужно как то получать экземпляр модели не здесь, но тогда где, моя кнопка с авторизацией находится в хеадере шаблона, соответственно доступна из любого контроллера сайта
Спасибо
Re: Yii2-user
Создать виджет авторизации, как вариант, и там, где формируется меню, или кнопка, нажатие на которую должно вызывать модальное окно, подключать этот виджетkutuev93 писал(а):Здравствуйте, возник еще один вопрос на основе данного модуля.ElisDN писал(а):Используйте yii\bootstrap\Nav вместо yii\widgets\Menu, так как у Menu нет опции linkOptions.kutuev93 писал(а):Я так понимаю, вы супергуру в yii, если не сложно, не могли бы вы прокомментировать, почему так работает, по другому нет?
Мне хотелось бы сделать авторизацию через всплывающее окно. Сейчас авторизация реализуется через экшен login.
Ничего пока умного не пришло в голову как:
1. В модальном окне тупо выдрать див, с полной формой
2. Перед этим создать модель $model = Yii::createObject(LoginForm::className());
Работает, но идея очень некрасивая, потому что я думаю:
1. Я уже завязал логику в вид
2. Возможно, будет уязвимое место на сайте
Потенциальное решение для себя:
Нужно как то получать экземпляр модели не здесь, но тогда где, моя кнопка с авторизацией находится в хеадере шаблона, соответственно доступна из любого контроллера сайта
Спасибо
Re: Yii2-user
Я правильно понимаю, что в виджите будет как раз браться экземпляр модели: $model = Yii::createObject(LoginForm::className());Onotole писал(а):Создать виджет авторизации, как вариант, и там, где формируется меню, или кнопка, нажатие на которую должно вызывать модальное окно, подключать этот виджетkutuev93 писал(а):Здравствуйте, возник еще один вопрос на основе данного модуля.ElisDN писал(а): Используйте yii\bootstrap\Nav вместо yii\widgets\Menu, так как у Menu нет опции linkOptions.
Мне хотелось бы сделать авторизацию через всплывающее окно. Сейчас авторизация реализуется через экшен login.
Ничего пока умного не пришло в голову как:
1. В модальном окне тупо выдрать див, с полной формой
2. Перед этим создать модель $model = Yii::createObject(LoginForm::className());
Работает, но идея очень некрасивая, потому что я думаю:
1. Я уже завязал логику в вид
2. Возможно, будет уязвимое место на сайте
Потенциальное решение для себя:
Нужно как то получать экземпляр модели не здесь, но тогда где, моя кнопка с авторизацией находится в хеадере шаблона, соответственно доступна из любого контроллера сайта
Спасибо
Далее мне нужно будет вынести форму авторизации отдельно, а в методе run() как раз отрисовывать кусок формы, все верно?
- vitaxa_prog
- Сообщения: 306
- Зарегистрирован: 2011.06.06, 22:44
- Откуда: Волноваха
Re: Yii2-user
В документации написано, что можно всё переопределять. Я бы посоветовал вам унаследовать нужные части от yii-user. Я у себя в проекте так и сделал. И все прекрасно работает.kutuev93 писал(а): Мне хотелось бы сделать авторизацию через всплывающее окно. Сейчас авторизация реализуется через экшен login.
Ничего пока умного не пришло в голову как:
В принципе ничего нет невозможного.
— Вы думаете?
— Для человека. С интеллектом.
— Вы думаете?
— Для человека. С интеллектом.