Nastya
насколько я помню, эти экстра можно объявить функцией в модели, чето типа public function extraFields() {return ['foo', 'bar'];} с соотв. именами ваших геттеров
👀
по факту - ничего
👀
насколько я помню, эти экстра можно объявить функцией в модели, чето типа public function extraFields() {return ['foo', 'bar'];} с соотв. именами ваших геттеров
я смотрю по доке в коде что это вроде то что мне нужно, но результат вообще нулевой ладно, спасибо, это по крайней мере навело на мысль что ошибка может быть и у меня
Nastya
/** * @inheritdoc */ public function extraFields() { return [ 'creator' => 'creator', 'status' => 'status', 'priority' => 'priority', 'name' => 'name', ]; }
Nastya
вот так сделайте
Anton
Может версия фреймворка старая?
Nastya
$model->toArray([], ['name', 'status', 'priority']), и тогда такая конструкция будет работать
Anton
Как вариант
👀
в extraFields() не помогло пробовал и без ключей, и с ключами, и с callback значениями - никак оверрайднул fields, сделал там return array_merge(parent::fields(), array_combile(...)); - всё шикарно заработало
SiZE
Есть какая нибудь ссылка на best-practice по настройке прав внутри /var/www ?
Anton
https://github.com/yiisoft/yii2-app-advanced/blob/master/environments/index.php
Дмитрий
Trokhym
Если только не делаешь каких-то автодоменов и тд
Trokhym
Если делаешь то нужна действительно систематизация
Trokhym
Единственное это чтоб рили не /var/www/html (стандартный путь) чисто с точки зрения безопасности
Trokhym
Популярность Юи растет на глазах
SiZE
/var/www/<user>/<public_html>/<domain>
а юзеров всех в www-data пихать? @trosha_b
Anton
Йии
Niko
Популярность Юи растет на глазах
еще бы это на вакансиях по всему миру отражалось, не только на групе в телеграмме)
Niko
я не согласен
Trokhym
а юзеров всех в www-data пихать? @trosha_b
По хорошему там для каждого юзера нужно свою группу, вроде как
Trokhym
Там смотря как сесюрити и чрут настраивать будешь
SiZE
окей, понял
Дмитрий
а юзеров всех в www-data пихать? @trosha_b
соответственно рядом с public_html можно держать конфиги и логи
SiZE
я не согласен
upwork: Laravel Framework - 511 Laravel - 739 Yii - 130 Yii2 - 45 :(
Trokhym
Ну это ультрасесюрити
Воркеры в таком случае тоже должны тоже от этих юзеров гонять
Niko
upwork: Laravel Framework - 511 Laravel - 739 Yii - 130 Yii2 - 45 :(
я это видел. Не согласен с таким положением вещей
👻
ну так а в ошибке у тебя что
👻
он не может определить экшен site/error
Misha
подскажите пжл. yii2 DatePicker, мне нужно выбрать в календаре дату, но сохранить в бд в виде integer. Посерчил в гугле, но вроде бы нормального решения не нашел(
👻
а при получении из базы обратно
Artem
Не знаю правильного решения, но я бы в beforeSave делал strtotime() на нужное поле) p.s. Телега глючит, еле написал
👻
ну как вариант beforeSave преобразовать дату в нужный формат
Vladimir
Ребят, есть здесь кто кто делал rest апи и у него был кейс запросов через браузер?
Serge
Если просто хранить то unixtime, а если поиск и фильтрация по дате?
Максим
Максим
хотя при поиске так же точно можно конвертировать в search модели
Serge
Выборка из бд за период?
Максим
Выборка из бд за период?
это пусть автор вопроса думает, он спросил - ему дали ответ
Максим
может ему не нужна выборка
Vladimir
ну в плане запросы делались тупо через браузер сам) я столкнулся с одной штукой и почему-то мне кажется, что я где-то страшно что-то пропустил или же пора делать ишью: короче, поведение браузера же при 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; }` он проверяет все заголовки что отслал браузер, и устанавливает ему заголовки ответа все как нужно
Vladimir
тьфу, форматирование, ну хрен с ним
Serge
:) ну я использую datetime
Vladimir
да вот беда, он потом возвращает true и метод апи начинает выполняться дальше, а там идет работа с User классом а в этот момент он не авторизован
Vladimir
я наследовал класс и в beforeAction возвращаю false если запрос options и все работает
Vladimir
нууу заголовок Authorization то шлется
Максим
ты когда авторизуешься у тебя заполняется Yii::$app->user->identity и с ним работай как с юзером
Максим
ну через API аутентификацию проходишь я имею ввиду)
Максим
у меня в поведении сделано - при каждом запросе проверять access_token, аутентификация через QueryParamAuth осуществляется
Vladimir
не, я понимаю, просто смотри как получается: - браузер видит что я пытаюсь отослать через него Authorization и делает сначала запрос Options на проверку, можно ли работать с этим заголовком, но НЕ шлет его в Options - на сервере поведение Cros обрабатывает заголовки запроса и устанавливает заголовки ответа, в которых разрешает работать с ним - тут по-идее нужно было завершить работу с запросом, но нет: так как Cros фильтр находится в beforeAction и затем возвращает true, метод api пытается выполниться дальше, а там идет проверка аутентификации которой еще нет. Запрос GET с разрешенным токеном будет отослан следующим - вылетает ошибка, и браузер не делает правильный GET запрос следом
Vladimir
ты когда авторизуешься у тебя заполняется Yii::$app->user->identity и с ним работай как с юзером
Vladimir
ну тут не в заголовках токен лежит, мб поэтому все ок, а я через HttpBearer пытаюсь
Vladimir
у меня в поведении сделано - при каждом запросе проверять access_token, аутентификация через QueryParamAuth осуществляется
Максим
ага, я выбрал вариант попроще
Vladimir
просто мне кажется, что cros фильтр должен отправлять заголовки браузеру и вырубать запрос, ожидая правильного метода GET, который уже будет иметь все что нужно
Vladimir
и тут я где-то явно туплю
Antony
public function actions() { return [ 'options' => [ 'class' => 'yii\rest\OptionsAction', ], ]; }
Antony
Ну и собстенно все запросы с OPTIONS можно слать на 1 экшен.
Misha
ну как вариант beforeSave преобразовать дату в нужный формат
а потом же нужно при выводе виджета на странице, запихнуть туда дату из бд
👻
так это тебе после выборки делать надо
👻
можешь как вариант бехейвер напидалить который сам будет все делать
👻
ну или перевести поле в датетайм и не морочить себе голову :)
Misha
перед тем как передать модель в вид update , преобразовать integer в нужный формат даты?
👻
да
Misha
так это тебе после выборки делать надо
ясненько, пасиб, буду копать
👻
или у тебя будет 2 события 1 beforeSave 2е afterfind на счет второво точно не уверен но помоему так
👻
ну если у тебя будет много где такое пиши бехавиор
Misha
Та только в этой таблице