Good
Ну собственно, много серьезных приложений пишутся так, что админка вообще как отдельное приложение. то есть, как-то разделяют
Lee
Ну собственно, много серьезных приложений пишутся так, что админка вообще как отдельное приложение. то есть, как-то разделяют
Создаешь модуль админ. На примере бэйсика — все модели скинул в кучу в апп, и юзаешь их и в модуле и вне.
Good
Да, но если нужно переносить модуль куда-нибуть еще. а его админка - частть одного модуля админки?
Good
В бейсике я для себя просто решил
Good
В каждом модуле подпапка АДМИн для контроллеров
Good
Ну и все
The Ant
вот юзер кстати часто кочует туда суда, но его трудно поделить на админскую часть и фронт )
Good
Єто да
Dmitriy
Ну собственно, много серьезных приложений пишутся так, что админка вообще как отдельное приложение. то есть, как-то разделяют
В больших приложения админка это целый отдельный проект. И она взаимодействует через прослойку в виде api. ну или что-то похожее
Galymzhan
http://yiiframework.ru/forum/viewtopic.php?f=34&t=44524
Более менее прояснилась диллема. Мне кажется тут нужно разрабатывать модуль, как если бы вы собирались выложить его отдельно в гитхаб. Т.е. предположим что у вас есть модуль для просмотра и редактирования статичных страниц. Для начала нужно определиться с расположением модуля. Можно в принципе создать отдельную папку modules в корне app-advanced, либо пользоваться все той-же common, в которой создать папку modules. Примерное расположение внутри я вижу такое: http://take.ms/eqUsf (названия можно поменять на вкус, а можно еще вложенности добавить, если нравится) В таком случае конфиг фронтового модуля прописывается в конфиге фронта, админа в админке
Good
Собственно, мне казалось, что есть конкретный рецепт, а теперь вижу, что нифига)
Lee
вот юзер кстати часто кочует туда суда, но его трудно поделить на админскую часть и фронт )
Для определенных контроллеров модуля меняешь тему на админскую, да и всё. Рулы там свои, пермишны — тоже.
Galymzhan
Для определенных контроллеров модуля меняешь тему на админскую, да и всё. Рулы там свои, пермишны — тоже.
А еще лучше - общий родительский контроллер админский и фронтовой, где это сделано заранее :D
Galymzhan
вот это дичь )
Был бы рад более конструктивному комментарию, но и на том спасибо
Good
Короче, я так вижу, что тут нужно пояснение атцов, ибо так к консенсусу не придем)
The Ant
Был бы рад более конструктивному комментарию, но и на том спасибо
1) решить неймспейсами разделение. 2) саб модуль, зависимый. Достаточно конструктивно? )
Lee
Короче, я так вижу, что тут нужно пояснение атцов, ибо так к консенсусу не придем)
Короче, главное — написать, и шоб самому нравилось. А народ покритиковать всегда может.
Good
Ну так вот и хочу, чтоб нравилось, и не набивать шишки самому
Good
Там на форуме вроде отпиласлись более менее конструктивно
Misha
Бок при валидации файла. public function rules() { return [ [['name'], 'string', 'max' => 255], [['name', 'phone', 'email', 'cvv'], 'required'], ['email', 'email'], [['cvv'], 'file', 'skipOnEmpty' => false, 'extensions' => 'doc, pdf, docx', 'maxSize'=>1024 * 1024 * 2], ]; } Все поля помимо фалйа проходят валидацию, когда я выбираю файл, то мне всеравно высвечивает ошибку, как буд-то я его не выбрал. В чём проблема?
Lee
Там на форуме вроде отпиласлись более менее конструктивно
Самый полезный конструктив состоит в следующей цитате: Code as if the next guy to maintain your code is a homicidal maniac who knows where you live.
Misha
При чем когда выбрал его, лейбл горит зеленым, а по отправке формы кликнув, ошибку, мол не выбран файл
Galymzhan
1) До сих пор не вижу проблемы в разделении по неймспейсу. Например в конфиге потом 'pages' => ['class' => 'modules\pages\AdminModule'] для админа и такое же для фронта 2) А где здесь сабмодуль? Наверное тогда я неправильно понял сути вопроса :D
Good
В контроллере или в модели в бифорвалидейт нужно вітянуть инстанс файла.
Good
Вытянуть
Galymzhan
Зачем его разделять?
Ну чтобы правила для доступа не дублировать для каждого контроллера в админке
Lee
В acl прописал
Galymzhan
В acl прописал
А с этого момента поподробнее - что за acl?
The Ant
1) До сих пор не вижу проблемы в разделении по неймспейсу. Например в конфиге потом 'pages' => ['class' => 'modules\pages\AdminModule'] для админа и такое же для фронта 2) А где здесь сабмодуль? Наверное тогда я неправильно понял сути вопроса :D
не совсем. модуль 1, но для админа тянутся контроллеры \app\module\pages\controllers\admin\PageController Т.е. этот контроллер лежит в папке контроллерс, но уровнем ниже, под админом
Galymzhan
AccessControlLayer?
Lee
access control list
Misha
Вытянуть
вроде вытянут, просто если избавиться от валидации файла, все созраняется, но стоит только поле файла сделать required, как сразу ошибка
Good
А какие ошибки? Дебажжить нужно
Good
И на каком этапе вытягивается?
Galymzhan
не совсем. модуль 1, но для админа тянутся контроллеры \app\module\pages\controllers\admin\PageController Т.е. этот контроллер лежит в папке контроллерс, но уровнем ниже, под админом
Да, мне лень было папки создавать, в оригинальном сообщении я добавил, что "(названия можно поменять на вкус, а можно еще вложенности добавить, если нравится)"
Misha
не, загрузив повторно
Lee
Окей, какое сообщение валидатора?
Lee
$model->getErrors() принтани
Misha
Резюме cannot be blank.
Galymzhan
у тебя ситуация, когда два модуля скидали в кучу и назвали по разному ) У них даже инициализация разная
в кучу они скиданы по семантике функционала, т.е. оба модуля работают со страницами. можно вообще завести один модуль, который в зависимости от входной точки (frontend/admin) будет менять controllerNamespace, но это уже детали реализации
The Ant
то, что требуется для работы модуля
The Ant
иногда ничего )
Galymzhan
В acl прописал
Погуглил, не смог найти пример реализации, если конечно это не http://take.ms/E2cHs
Misha
В контроллере или в модели в бифорвалидейт нужно вітянуть инстанс файла.
if ($model->load(Yii::$app->request->post())) { $model->cvv = UploadedFile::getInstance($model, 'cvv'); if($model->validate()){ Вобщем переделал так, заработало.
Good
Ну, наверное валидация была слишком рано
Misha
спасибо
Galymzhan
if ($model->load(Yii::$app->request->post())) { $model->cvv = UploadedFile::getInstance($model, 'cvv'); if($model->validate()){ Вобщем переделал так, заработало.
вообще это лучше перенести в beforeValidate, только перед этим проверить результат UploadedFile::getInstance($model, 'cvv'); на null, контроллер лучше не забивать этим.
Good
Да, я тоже так делал, но в документации почему-то в контроллере
Dmitriy
https://github.com/samdark/yii2-cookbook/blob/master/book/structure-backend-frontend-modules.md
Galymzhan
Коре команда предлагает делать 2 модуля pages для фронт и бекенд. Но это имхо ужастно
По сути я предложил то же самое, только без излишней вложенности, как пример базовой реализации
Galymzhan
Коре команда предлагает делать 2 модуля pages для фронт и бекенд. Но это имхо ужастно
так же core команда говорит, что app-advanced возможно скоро не будет
Dmitriy
Самое интересное как они предлагают обьединять "общий код"
Galymzhan
вроде хотят заапгрейдить basic (будет basic-advanced) и отдельный шаблон под stateless API
The Ant
шаблон свой собрать можно, какой хочешь
The Ant
без ожиданий кор команды )
Galymzhan
шаблон свой собрать можно, какой хочешь
но это приходит с опытом. большинство людей приходят к advanced, когда им не хватает basic, и возникают такие вопросы, как здравое разделение модулей
The Ant
вот тока проблема в том, что когда до этого доходишь, yii чот уже не хочется юзать )
Dmitriy
а в симфонии как делают?
Разные практики Там популярный подход CoreBundle когда общий код выносится в этот бандл. это ужастно имхо. А так там выносят админку в отдельный неймспейс . App/Controller/Admin - тут вся админка. App/Controller - тут все остальное. Ну еще иногда разделяют по ф-лу
Dmitriy
Видел? https://github.com/bariew/yii2-event-component
мм. не плохо. сделали отдельный провайдер для кон-ции всех евентов
Good
Че-то вас читаю, и думаю что ну его к черту этот адвансед)
The Ant
именно для админ части
The Ant
Типо создание юзера ?
ну юзер это простой. Например взять галереи. Решил ты сделать нарезку тумб для фоточек размером другой
Galymzhan
расширение бизнес логики тоже через неймспейсы?
Мне кажется там пишется сервисный слой, которому не важно, на какой стороне просиходит действие. То же самое люди делают и в уии
The Ant
хотя наверное не очень удачный пример