@yii2ru

Страница 111 из 1721
Dmytro
21.03.2017
09:31:33
можно через controllerMap конфигурировать класс контроллера из конфига

у контроллера есть аттрибут layout

Boris
21.03.2017
09:32:01
Спасибо

Dmytro
21.03.2017
09:32:51
http://www.yiiframework.com/doc-2.0/yii-base-controller.html#$layout-detail

Google
Dmytro
21.03.2017
09:33:03
http://www.yiiframework.com/doc-2.0/yii-base-module.html#$controllerMap-detail

еще вариант через контейнер конфигурить класс

контроллер создаеться через метод Yii::createObject, а тот в свою очередь использует Container::get

@za4me, а можете объяснить причину такого подхода?

Boris
21.03.2017
09:40:51
Есть модуль yii2-user, думаю сталкивались с ним?

Для advanced на страницу логина он грузит общий шаблон

Необходимо было сменить, controllerMap помог

https://github.com/dektrium/yii2-user/issues/646

В issues оказывается есть просто море информации.

Спасибо еще раз

Dmytro
21.03.2017
09:44:44
у этого модуля есть доки

там тоже это описано

Google
Boris
21.03.2017
09:45:23
https://github.com/dektrium/yii2-user/tree/master/docs

Тут? Не нашел инфы той что мне необходима.

Dmytro
21.03.2017
09:46:48
https://github.com/dektrium/yii2-user/blob/0.9.12/docs/overriding-controllers.md

ну, здесь не точно об layout

нужно знать, что он в Controller как свойство

но все же доки у этого модуля очень неплохи

Boris
21.03.2017
09:54:54
Подскажите, я могу как-то назначить шаблон для определенного url?

Но только не в контроллере

SiZE
21.03.2017
10:25:41
а вы пробовали дебажить Logger::log?
Да, я уже задебажил все и все получилось.

Параллельно спросил, быстрей сам нашел.

Так что нормално )

Проблема с временными зонами. Пока дебажу, но может кто знает уже. Локально, как обычно все збс. В бою дичь. При выводе в GridView поля timestamp createdAt:datetime добавляет часы. В базе значение 2016-08-31 19:15:35, в гриде уже 31 авг. 2016 г., 23:15:35.

В базе MSK, в PHP Europe\Moscow

Alexander
21.03.2017
12:35:13
В базе MSK, в PHP Europe\Moscow
попробуй Europe\Minsk

SiZE
21.03.2017
12:35:26
Это не выход же )

Alexander
21.03.2017
12:35:55
это быстрая диагностика проблем с версией ICU

проверь какая версия стоит

Dmytro
21.03.2017
12:36:11
date_default_timezone_set ?

Google
Dmytro
21.03.2017
12:36:17
может так?

в index.php

если вам надо одна зона

+ время на сервере можно проверить

SiZE
21.03.2017
12:54:42
Спасибо. Я на сервере окружение глянул, сейчас приведу в соответствие и проверю

Dmytro
21.03.2017
12:57:11
я в одно время тоже имел проблемы со таймзонами, решил просто, в свою админку добавил часы)



если нет возможности по ssh глянуть точное время -- очень удобно

Mr.
21.03.2017
13:11:34
мне обычно помогает строчка в конфиге

'timeZone' => 'Europe/Kiev',

не знаю какой магией, но оно спасает положение всегда

Alexander
21.03.2017
13:23:31
не знаю какой магией, но оно спасает положение всегда
это не магия, это прелести переводов таймзоны Europe\Moscow в +3 / +4 часовые пояса если на сервере время верное, в базе верное, в конфиге приложения тоже всё гуд - проверяй версию ICU (Минск, Киев... - они не прыгали между таймзонами, на сколько мне известно)

Alexander
21.03.2017
13:24:01
вот есть статейка как проверить/полечить: https://nix-tips.ru/obnovlenie-icu-na-centosred-hatfedora.html

Mr.
21.03.2017
13:26:25
А я и забыл что у вас куча часовых поясов

Зато отменили переход на зимнее время :)

SiZE
21.03.2017
13:57:56
Вобщем фича вот в чем. Если у форматера указать UTC то он оставляет без изменений время. А т.к. он по умолчанию получает значение date.timezone="Europe/Moscow" то приводит к нему

Я с временными зонами мало работал к сожалению. Не знаю как быть.

http://www.yiiframework.ru/forum/viewtopic.php?f=19&t=42896

но помоему очевидность я спросил Note that the default time zone for input data is assumed to be UTC by default if no time zone is included in the input date value. If you store your data in a different time zone in the database, you have to adjust $defaultTimeZone accordingly.

Dmytro
21.03.2017
14:35:18
тут два варианта, либо на как вы уже сказали форматеру ставить UTC, а на сервере держать правильную tz либо наоборот, тогда в БД все даты будут в UTC

Google
Boris
21.03.2017
14:37:38
Ребят, подскажите, пожалуйста.

Как лучше реализовать следующее

Если пользователь не залогинен на сайте, то на любой url перенаправлять его на страницу входа

Dmytro
21.03.2017
14:39:43
фильтр на beforeAction

у \yii\filters\AccessControl есть denyCallback

или вешайте сразу на Application обработчик на beforeAction

Boris
21.03.2017
14:45:29
as beforeAction?

Mr.
21.03.2017
14:48:04
в yii ведь есть AccessControl

Boris
21.03.2017
14:48:33
Да. Я его и хочу глобально повесить на админку

Mr.
21.03.2017
14:51:23
сейчас скину кусок кода

Admin
ERROR: S client not available

Boris
21.03.2017
14:51:52
у меня вот так на одном проекте работает

'as beforeRequest' => [ 'class' => 'yii\filters\AccessControl', 'rules' => [ [ 'actions' => ['login', 'error'], 'allow' => true, ], [ 'allow' => true, 'roles' => ['@'], ], ], ],

Mr.
21.03.2017
14:52:13
'access' => [ 'class' => AccessControl::className(), 'rules' => [ [ 'actions' => ['login', 'error'], 'allow' => true, ], [ 'allow' => true, 'roles' => ['@'], ], ], ],

это в behaviors() в контроллер

Boris
21.03.2017
14:53:04
Как прописать в контроллер я знаю, у меня их в админке будет к примеру 200, мне в каждый это писать? Неудобно.

Вот я ищу как сделать это глобально. Еще на админке висит yii2-user модуль.

Mr.
21.03.2017
14:54:14
ну, гугл говорит что ваш вариант очень даже ок :)

http://stackoverflow.com/questions/25998122/yii2-global-filter-behavior-to-force-user-to-authenticate-first

Boris
21.03.2017
14:54:42
Так я его оттуда и дернул :)

Google
Boris
21.03.2017
14:54:57
Но этот способ конфликтует с yii2-user модулем

а можно как-то добавить beforeAction для всех контроллеров?

В конфиге

Mr.
21.03.2017
14:56:24
разве что подключить как компоненту, и вызывать это в bootstrap'е

есть ещё вариант с beforeRequest

'as beforeRequest' => [ 'class' => 'yii\filters\AccessControl', 'rules' => [ [ 'allow' => true, 'actions' => ['login'], ], [ 'allow' => true, 'roles' => ['@'], ], ], 'denyCallback' => function () { return Yii::$app->response->redirect(['site/login']); }, ],

ivphpan
21.03.2017
14:57:20
может лучше это сделать по другому?

Mr.
21.03.2017
14:57:34
здесь объявлен denyCallback, который отправляет пользователя куда надо

ivphpan
21.03.2017
14:57:35
вынести в отдельный родительский контроллер и от него наследовать?

Mr.
21.03.2017
14:58:12
вынести в отдельный родительский контроллер и от него наследовать?
если у человека 200 контроллеров, то он за(любит)ся их править)

ivphpan
21.03.2017
14:59:39
ide на что?

find & replace)

Dmytro
21.03.2017
15:06:32
Boris
21.03.2017
15:08:16
@Dmytrovych ставлю код что посоветовал @SomeWho и получаю

User::identityClass must be set.

Dmytro
21.03.2017
15:08:21
или вешайте сразу на Application обработчик на beforeAction
в коде обработчика проверяете Yii::$app->user->isGuest и делаете редирект

эта ошибка не из-за этого кода

у вас не установлена identityClass в компоненте user

Boris
21.03.2017
15:11:09
А у меня и нет этого компонента, т.к. стоит модуль yii2-user

Dmytro
21.03.2017
15:11:42
вы не поняли

user -- это компонент Application

а не модуля



Страница 111 из 1721