
Trofim
20.02.2018
12:15:46
Популярность Юи растет на глазах

SiZE
20.02.2018
12:16:05

Антон
20.02.2018
12:16:08
Йии

Дмитрий
20.02.2018
12:18:22

Google

Maxim
20.02.2018
12:18:54

Антон
20.02.2018
12:19:31

Maxim
20.02.2018
12:19:51
я не согласен

Trofim
20.02.2018
12:19:59
Там смотря как сесюрити и чрут настраивать будешь

SiZE
20.02.2018
12:20:52
окей, понял

Trofim
20.02.2018
12:21:52

Дмитрий
20.02.2018
12:22:11

SiZE
20.02.2018
12:22:54
я не согласен
upwork:
Laravel Framework - 511
Laravel - 739
Yii - 130
Yii2 - 45
:(

Trofim
20.02.2018
12:23:07

Maxim
20.02.2018
12:23:45


Poul
20.02.2018
13:16:27
всем привет, вопрос к тем кто делал мультидоменное приложение на Advanced
(вместо backend и frontend - sitename например)
сделал вот что
composer create-project yiisoft/yii2-app-advanced yapp 2.0.12
изменил frontend/backend folder names
изменил common -> config -> bootstrap.php (добавил Yii::setAlias('@sitename', dirname(dirname(__DIR__)) . '/sitename)
изменил environments -> index.php
изменил имена папок environments -> dev/prod
php init
поправил config db
поправил неймспейсы app/root/config/main -> controllerNamespace
и что-то получил вот такую ошибку и туплю
An Error occurred while handling another error:
yii\base\InvalidRouteException: Unable to resolve the request "site/error". in /Applications/MAMP/htdocs/tzym/yapp/vendor/yiisoft/yii2/base/Module.php:537
Stack trace:
#0 /Applications/MAMP/htdocs/tzym/yapp/vendor/yiisoft/yii2/web/ErrorHandler.php(108): yii\base\Module->runAction('site/error')
#1 /Applications/MAMP/htdocs/tzym/yapp/vendor/yiisoft/yii2/base/ErrorHandler.php(111): yii\web\ErrorHandler->renderException(Object(yii\web\NotFoundHttpException))
#2 [internal function]: yii\base\ErrorHandler->handleException(Object(yii\web\NotFoundHttpException))
#3 {main}
Previous exception:
yii\base\InvalidRouteException: Unable to resolve the request "". in /Applications/MAMP/htdocs/tzym/yapp/vendor/yiisoft/yii2/base/Module.php:537
Stack trace:
#0 /Applications/MAMP/htdocs/tzym/yapp/vendor/yiisoft/yii2/web/Application.php(103): yii\base\Module->runAction('', Array)
#1 /Applications/MAMP/htdocs/tzym/yapp/vendor/yiisoft/yii2/base/Application.php(386): yii\web\Application->handleRequest(Object(yii\web\Request))
#2 /Applications/MAMP/htdocs/tzym/yapp/w_tszakaz_ru/web/index.php(17): yii\base\Application->run()
#3 {main}
Next yii\web\NotFoundHttpException: Page not found. in /Applications/MAMP/htdocs/tzym/yapp/vendor/yiisoft/yii2/web/Application.php:115
Stack trace:
#0 /Applications/MAMP/htdocs/tzym/yapp/vendor/yiisoft/yii2/base/Application.php(386): yii\web\Application->handleRequest(Object(yii\web\Request))
#1 /Applications/MAMP/htdocs/tzym/yapp/w_tszakaz_ru/web/index.php(17): yii\base\Application->run()
#2 {main}
есть идеи куда копать?


?
20.02.2018
13:31:02
ну так а в ошибке у тебя что

Google

?
20.02.2018
13:31:24
он не может определить экшен site/error

Misha
20.02.2018
13:46:57
подскажите пжл. yii2 DatePicker, мне нужно выбрать в календаре дату, но сохранить в бд в виде integer. Посерчил в гугле, но вроде бы нормального решения не нашел(

?
20.02.2018
13:59:01
а при получении из базы обратно

Максим
20.02.2018
13:59:47

Artemy
20.02.2018
14:00:03
Не знаю правильного решения, но я бы в beforeSave делал strtotime() на нужное поле)
p.s. Телега глючит, еле написал

?
20.02.2018
14:01:13
ну как вариант beforeSave преобразовать дату в нужный формат

Максим
20.02.2018
14:01:28

Вова
20.02.2018
14:01:29
Ребят, есть здесь кто кто делал rest апи и у него был кейс запросов через браузер?

Serge
20.02.2018
14:01:47
Если просто хранить то unixtime, а если поиск и фильтрация по дате?

Максим
20.02.2018
14:02:03
хотя при поиске так же точно можно конвертировать в search модели

Serge
20.02.2018
14:03:39
Выборка из бд за период?

Максим
20.02.2018
14:04:24
может ему не нужна выборка


Вова
20.02.2018
14:04:49
ну в плане запросы делались тупо через браузер сам) я столкнулся с одной штукой и почему-то мне кажется, что я где-то страшно что-то пропустил или же пора делать ишью:
короче, поведение браузера же при cros мы знаем: делается запрос options, сервер возращает заголовок с заголовками которые он может принять от пользователя, затем делается get и все в шоколаде.
только вот как работает yii\filters\Cros
`public function beforeAction($action)
{
$this->request = $this->request ?: Yii::$app->getRequest();
$this->response = $this->response ?: Yii::$app->getResponse();
$this->overrideDefaultSettings($action);
$requestCorsHeaders = $this->extractHeaders();
$responseCorsHeaders = $this->prepareHeaders($requestCorsHeaders);
$this->addCorsHeaders($this->response, $responseCorsHeaders);
return true;
}`
он проверяет все заголовки что отслал браузер, и устанавливает ему заголовки ответа все как нужно
тьфу, форматирование, ну хрен с ним


Serge
20.02.2018
14:05:08
:) ну я использую datetime

Максим
20.02.2018
14:05:15

Вова
20.02.2018
14:05:35
да вот беда, он потом возвращает true и метод апи начинает выполняться дальше, а там идет работа с User классом а в этот момент он не авторизован

Google

Вова
20.02.2018
14:05:57
я наследовал класс и в beforeAction возвращаю false если запрос options и все работает

Максим
20.02.2018
14:06:07

Вова
20.02.2018
14:06:26
нууу заголовок Authorization то шлется

Максим
20.02.2018
14:06:41
ты когда авторизуешься у тебя заполняется Yii::$app->user->identity и с ним работай как с юзером
ну через API аутентификацию проходишь я имею ввиду)


Вова
20.02.2018
14:09:56
не, я понимаю, просто смотри как получается:
- браузер видит что я пытаюсь отослать через него Authorization и делает сначала запрос Options на проверку, можно ли работать с этим заголовком, но НЕ шлет его в Options
- на сервере поведение Cros обрабатывает заголовки запроса и устанавливает заголовки ответа, в которых разрешает работать с ним
- тут по-идее нужно было завершить работу с запросом, но нет: так как Cros фильтр находится в beforeAction и затем возвращает true, метод api пытается выполниться дальше, а там идет проверка аутентификации которой еще нет. Запрос GET с разрешенным токеном будет отослан следующим
- вылетает ошибка, и браузер не делает правильный GET запрос следом
ты когда авторизуешься у тебя заполняется Yii::$app->user->identity и с ним работай как с юзером
ну тут не в заголовках токен лежит, мб поэтому все ок, а я через HttpBearer пытаюсь

Максим
20.02.2018
14:10:54
ага, я выбрал вариант попроще

Вова
20.02.2018
14:11:35
просто мне кажется, что cros фильтр должен отправлять заголовки браузеру и вырубать запрос, ожидая правильного метода GET, который уже будет иметь все что нужно

Вова
20.02.2018
14:11:44
и тут я где-то явно туплю

Antony
20.02.2018
14:12:01
public function actions()
{
return [
'options' => [
'class' => 'yii\rest\OptionsAction',
],
];
}
Ну и собстенно все запросы с OPTIONS можно слать на 1 экшен.

Misha
20.02.2018
14:14:26

?
20.02.2018
14:14:57
так это тебе после выборки делать надо
можешь как вариант бехейвер напидалить который сам будет все делать
ну или перевести поле в датетайм и не морочить себе голову :)

Google

Misha
20.02.2018
14:16:26
перед тем как передать модель в вид update , преобразовать integer в нужный формат даты?

?
20.02.2018
14:16:51
да

Misha
20.02.2018
14:17:04

?
20.02.2018
14:17:32
или у тебя будет 2 события 1 beforeSave 2е afterfind
на счет второво точно не уверен но помоему так
ну если у тебя будет много где такое пиши бехавиор

Misha
20.02.2018
14:18:27
Та только в этой таблице

Admin
ERROR: S client not available

Misha
20.02.2018
14:18:54
дату рождения по тз надо в int хранить, а в виде нужно календарь выводить и выбирать в нем дату

?
20.02.2018
14:22:45
Смысл тока какой в этом я хз

Misha
20.02.2018
14:29:08
хз
сделал beforeSave strtotime
в бд сохраняет integer, а при выводе виджет сам преобразует в 11.01.1991

?
20.02.2018
14:30:37
не за что

Nastya
20.02.2018
14:39:56
хз
а вы и в паспорте Родной?

Misha
20.02.2018
14:41:16

Nastya
20.02.2018
14:41:24
кайфно
жаль, не Любимый, но и так хорошо

Misha
20.02.2018
14:41:58
?

Максим
20.02.2018
14:47:55
Скажите, а если я создал слушателя событий в одной модели, из другой модели триггер сработает? У них же общее хранилище?

Google

Максим
20.02.2018
14:49:06
Естественно, $event->name одинаковый будет

Andrey
20.02.2018
14:53:59
Помню где-то делал отдельные евенты для каждой модели. (Динамически понятное дело, не руками везде прописывал :) ) если надо могу поискать.

Максим
20.02.2018
14:54:32
мне как раз общие нужны) чтобы отовсюду работали

Nastya
20.02.2018
14:55:02
расскажите потом, если разберетесь, у меня прям щас такая же задача
бродкастить на всё приложение
но, по-моему, без прямого вызова триггера не отработает

Alexey
20.02.2018
14:56:02
Броадкасть на апп

Максим
20.02.2018
14:56:43
прямого это какого? (new User())->trigger(User::TRIGGER_NAME); такой или какой то другой?

Nastya
20.02.2018
14:57:12
ну чето вроде того

Максим
20.02.2018
14:57:19
надо Пашке Дурову сказать, чтобы ввел кнопку "ответить" около юзера)
а какие еще вызовы могут быть? я только так и дергал триггер

Nastya
20.02.2018
15:00:17
ну я тоже думала про общий трейт или поведение

Alexey
20.02.2018
15:08:13
Месите чет, есть же соьытия класса
Event::trigger(User::class, atata)

Максим
20.02.2018
15:10:02
этого мало. что если я возьму update событие, но оно разделяется на два типа, к примеру - таблица в деньгами, одно событие - положил деньги на счет, другое - снял со счета. или меняется какое то поле, и в зависимости от поля, требуется то или иное действие

Вова
20.02.2018
15:34:47

Andrey
20.02.2018
15:46:38