Anonymous
Штука вся в том, что я хочу получать в этом хелпере константу ADMIN_ROLE через $model::ADMIN_ROLE, т.е. у меня так выйдет, что я буду пытаться ее получить из модели, которая мне пришла в хелпер.
Anonymous
А так как там сейчас модель формы, то я ее попросту не получу, ее там нету.
Anonymous
В общем, такие заморочки.
Павел
А, вононочо
Dmitriy
пср плачит, switch, сервис локатор. хм Сделать интерфейс . константу запрашивать через метод. метод этот в интерфейс .
Dmitriy
Дык трейтом проще
Проще не трогать ничего. и наследоваться 100 раз
Павел
А на кой интерфейс ради одной константы?
Павел
Метод геттера ещё писать
Dmitriy
Ну наследуйся. мне то что. не мой же проект
Павел
В чем преимущества интерфейса тут?
Павел
И чем имплементация интерфейса интереснее использования трейта
Anonymous
Anonymous
Простите :)
Павел
А имплементация интерфейса это не наследование?
Dmitriy
Нет
Anonymous
Ну кстати идея с интерфейсом в принципе замечательная. Правда не совсем понимаю, как это должно выглядеть. И почему например интерфейс, а не абстрактный класс?
Павел
То есть писать интерфейс, писать в имплементирующем классе метод геттера это круче чем просто трейт подключить?
Dmitriy
конечно.
Павел
конечно.
Обоснуй
Dmitriy
Ну кстати идея с интерфейсом в принципе замечательная. Правда не совсем понимаю, как это должно выглядеть. И почему например интерфейс, а не абстрактный класс?
подставить реализацию можно может посмотреть в эту сторону https://github.com/yiisoft/yii2/blob/ba0ab403b52124c941dbeb46fbd9efdc12252a5d/framework/rbac/PhpManager.php
Dmitriy
Обоснуй
чем плохо наследование обьяснять не нужно ?
Павел
Я не вижу разницы между наследованием и имплементацией
Павел
Те же яйца только в профиль
Павел
А в данном случае вообще
Витебск 01
Такой вопрос, на каждой странице иногда нужен свой уникальный CSS файл, который будет только на нем, как можно такое реализовать?
Dmitriy
Я не вижу разницы между наследованием и имплементацией
Вот в этом и проблема. при имплементации я уверен буду что класс не изменится . а при наследование кто-то подменит класс и мы не узнаем об этом
Витебск 01
Ассетами
А есть какая - то статья с подробностями про это?
Anonymous
подставить реализацию можно может посмотреть в эту сторону https://github.com/yiisoft/yii2/blob/ba0ab403b52124c941dbeb46fbd9efdc12252a5d/framework/rbac/PhpManager.php
В смысле вообще все переделать под пхпманагер или чисто подсмотреть как у белых людей делается?
Павел
Я же говорю в данном случае это ваще не работает
Dmitriy
В данном случае константу в интерфейсе легко подменят и ты не узнаешь
Как внутри реализованно пофиг. вернуло единичку или двойку тоже. главное что бы возвращало цифру
Dmitriy
В смысле вообще все переделать под пхпманагер или чисто подсмотреть как у белых людей делается?
Посмотреть и если нужно сделать свою реализацию и вызывать Yii::$app->user->checkAccess(); Это самый правильный вариант
Павел
Как внутри реализованно пофиг. вернуло единичку или двойку тоже. главное что бы возвращало цифру
Да кейс простой и поэтому считаю интерфейс тут лишними накладными расходами
Dmitriy
Ну наследуйся. мне то что. не мой же проект
Павел
Да делайте интерфейсы. Мне то что
Павел
Трейт вот как подменят тебе кстати?
Павел
Наследоваться от него нельзя
Павел
Так что имхо мимо кассы
Anonymous
Обожаю закатывать срачи и потирать ладошки.
Anonymous
Надо сюда Дмитрия Елисеева пригласить.
Anonymous
Но он правда боюсь к такому не привык :(
Павел
Где тут срач то?
Павел
Все по делу и вежливо имхо
Mihail
Такой вопрос, на каждой странице иногда нужен свой уникальный CSS файл, который будет только на нем, как можно такое реализовать?
1) Подключать ассет или отдельный файл из конкретной вьюхи 2) расширить контроллер, чтобы он цеплял ввтоматом "персональный" css/js при его наличии 3) нахрен морочиться, сложить всё в "большой" css - выигрыш от кеша общего стиля будет больше экономии на спичках
Mihail
Если пересекаются - то их надо распересекать обратно
Витебск 01
А как в ассете вывести например для опеределенной страницы
Витебск 01
Можно пример?
Mihail
там плагины. Зачем на главной плагин личного кабинета?
Css плагины?? Чоа? Ну заверни все нужные стили в класс контейнера
Витебск 01
ну там и JS
Павел
$this->registerCssFile('path/to/myfile')
Mihail
ну там и JS
И как я не догадался, если вопрос был про css
Mihail
$this->registerCssFile('path/to/myfile')
Если у него там гроздь стилей и скриптов, которые наверняка еще и от jQuery зависят, то только ассетом.
Mihail
Да даже если css+js
Павел
namespace app\assets;   use yii\web\AssetBundle;   class MyClassAsset extends AssetBundle {     public $basePath = '@webroot'; //алиас каталога с файлами, который соответствует @web     public $baseUrl = '@web';//Алиас пути к файлам     public $css = [         'css/vasya.css',     ];     public $js = [         'js/vasya.js',     ]; }
Витебск 01
НУ вот на этом примере бы
Mihail
Но в Yii1 мы колхозили второй путь, достаточно было положить в нужное место css или js с именем вьюхи, и оно цеплялось
Dmitriy
Трейт вот как подменят тебе кстати?
трейт это способ реюзать код. убрать дублирующий код. что уже плохо . "хелпер" может вынести лишнюю ответственность из модели, а трейт только ее добавит.
Витебск 01
Я знаю, как работать с ним, но как добавить для определенного
Mihail
Я знаю, как работать с ним, но как добавить для определенного
Идешь во вьюху, вызываешь его оттуда через ::register. Всё.
Витебск 01
Понял
Павел
Я знаю, как работать с ним, но как добавить для определенного
Создал свой бандл и подключил во вьюхе нужной
Витебск 01
Спасибо
Витебск 01
Лишним не будет
Павел
трейт это способ реюзать код. убрать дублирующий код. что уже плохо . "хелпер" может вынести лишнюю ответственность из модели, а трейт только ее добавит.
Ну тут соглашусь. Но человек же не считает эту ответственность лишней. Наоборот считает что место этому в модели
Mihail
поподробнее
Мы именно это только что обсудили