# ramzes (11.02.2015 / 23:12)
Rakovskiy, UsersGroupPermissions::inGroup
выбери один стандарт, или с заглавной, или со строчной, неудобно читать
PSR. Только название чуть длинноватое
reaper, Не в курсе какая может быть максимальная длина названия класса?
# Rakovskiy (11.02.2015 / 23:25)
PSR. Только название чуть длинноватое
х.з. мне как читателю, очень трудно такое читать, воспринимается как мясо
# ramzes (11.02.2015 / 23:36)
х.з. мне как читателю, очень трудно такое читать, воспринимается как мясо
Это потому, что i первая, а так ClassName::methodName() лучше чем ClassName::MethodName()
Ну в том коде, что выше есть пару боков по PSR, вот так по-моему строго по PSR
Модель (+/-)
<?php
namespace app\modules\admin\models;
use Yii;
use app\modules\admin\models\UsersPermissions;
use yii\helpers\Html;
/**
* This is the model class for table "users_groups".
*
* @property integer $id
* @property string $name
* @property string $alias
*/
class UsersGroups extends \yii\db\ActiveRecord
{
/**
* Массив прав доступа
*/
public $permissions = [];
/**
* @inheritdoc
*/
public static function tableName()
{
return 'users_groups';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['name', 'alias'], 'required'],
[['name', 'alias'], 'string', 'max' => 50],
['name', 'unique', 'targetAttribute' => 'name', 'message' => 'Группа с таким названием уже существует'],
['alias', 'unique', 'targetAttribute' => 'alias', 'message' => 'Группа с таким алиасом уже существует'],
[['permissions'], 'safe']
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'name' => 'Название',
'alias' => 'Алиас',
'permissions' => 'Права доступа'
];
}
/**
* Получаем права доступа
* @return array
*/
public function getPermissions()
{
$items = [];
foreach (UsersPermissions::find()->orderBy('module ASC')->all() as $item) {
$items[$item->id] = $item->module . '_' . $item->action;
}
return $items;
}
/**
* Сохраняем отмеченые нами права доступа для группы
* @return void
*/
private function savePermission()
{
if (is_array($this->permissions) === false) {
$this->permissions = [];
}
$delete = [];
$groupItems = UsersGroupPermissions::getPermissions($this->id);
foreach ($this->getPermissions() as $key => $value) {
if (in_array($key, $this->permissions) === true) {
if (UsersGroupPermissions::inGroup($this->id, $key) === false) {
$model = new UsersGroupPermissions();
$model->group = $this->id;
$model->permission = $key;
$model->save();
}
} elseif (in_array($key, $groupItems)) {
$delete[] = $key;
}
}
if (empty($delete) === false) {
UsersGroupPermissions::deleteAll(['group' => $this->id, 'permission' => $delete]);
}
}
/**
* @inheritdoc
*/
public function afterSave($insert, $changedAttributes)
{
$this->savePermission();
return parent::afterSave($insert, $changedAttributes);
}
}
Rakovskiy, на твой пост (
11.02.2015 / 23:36) отвечу, В рекомендациях не описано, PHP вроде тоже ограничений не накладывает. Так или иначе не нужно городить длиннючие названия, которые хрен запомнишь.
# reaper (11.02.2015 / 23:55)
Rakovskiy, на твой пост (11.02.2015 / 23:36) отвечу, В рекомендациях не описано, PHP вроде тоже ограничений не накладывает. Так или ин
Спасибо понял. {з как назвать таблицу связей прав доступа и групп для юзера, пришлось назвать users_group_permissions
Rakovskiy, Уж тогда наверное user_group_permissions по лучше будет.
Или user_groups. Честно, до сих пор не знаю, как правильнее таблицы в бд обзывать

.
# reaper (12.02.2015 / 00:10)
Rakovskiy, Уж тогда наверное user_group_permissions по лучше будет.
Скоротил на 1 букву... Могёшь.
Может просто сокращать длинные слова? Ну там permissions - perm или prss. Хотя второй вариант бредовый. Лучше perm или permis. Так более понятно о чём речь.
# Rakovskiy (11.02.2015 / 18:55)
Ну тогда буду писать на русском потому. Вот моя дока.
[php]
<?php
namespace app\modules\admin\models;
use Yii;
use app\modules\admin\models\UsersPermissions;
use yii\helpers\Html;
/**
зачем мешанину устроил, у тебя массив на выходе, массив определенной важности, зачем там еще и вывод текста ошибки? цифрами ретурни, цифру уже обрабатывай, текст ошибки как минимум должен быть в шаблонизаторе, а лучше в классе обработки ошибок