Yii2-user override AdminController

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
metsys
Сообщения: 10
Зарегистрирован: 2014.12.17, 17:33

Yii2-user override AdminController

Сообщение metsys »

Всем привет, собственно столкнулся с такой проблемой. Для работы с пользователями использую сию вещь:
http://yii2-user.readthedocs.org/en/lat ... rview.html

И хотелось бы мне переписать немного вьюху обновления информации пользователя. А точнее хочется добавить туда выбор роли пользователя:

Код: Выделить всё

['admin', 'manager', 'user']
Так вот в настройках сего модуля указано, что для расширения модели User необходимо использовать:

Код: Выделить всё

<?php
return [
    ...
    'modules' => [
        ...
        'user' => [
            'class' => 'dektrium\user\Module',
            'components' => [
                'manager' => [
                    // Active record classes
                    'userClass'    => 'common\models\User',
Собственно я так и сделал, но при апдейте информации о пользователе используя AdminController почему то продолжает использоватся класс 'dektrium\user\models\User'

Вот actionUpdate:

Код: Выделить всё

public function actionUpdate($id)
    {
        $user = $this->findModel($id);
        $user->scenario = 'update';
        $profile = $this->finder->findProfileById($id);
        $r = \Yii::$app->request;

        $this->performAjaxValidation([$user, $profile]);

        if ($user->load($r->post()) && $profile->load($r->post()) && $user->save() && $profile->save()) {
            \Yii::$app->getSession()->setFlash('success', \Yii::t('user', 'User has been updated'));
            return $this->refresh();
        }

        return $this->render('update', [
            'user'    => $user,
            'profile' => $profile,
            'module'  => $this->module,
        ]);
    }
Я честно говоря не так давно пишу на Yii и не совсем понимаю как $this->findModel() работает от имени dektrium\user\models\User если этот $this находится в контроллере и наверняка не является объектом ActiveRecord.

dmeroff
Сообщения: 101
Зарегистрирован: 2012.06.05, 14:32
Откуда: Петрозаводск
Контактная информация:

Re: Yii2-user override AdminController

Сообщение dmeroff »

На правах разработчика того модуля отвечу.

1) Во-первых, рекомендую обновиться до актуальной версии (0.9.2)
2) Во-вторых, пользуйтесь актуальной документацией (https://github.com/dektrium/yii2-user/b ... /README.md)
3) В-третьих, $this->findModel использует компонент finder, который и подрубает переопределенную модель (ранее этим компонентом был modelManager)
4) В-четвертых, если после обновления до актуальной версии проблема не уйдет (хотя по идее её и сейчас быть не должно), опишите проблему на github, будем разбираться.

Ответить