Nastya
насколько я помню, эти экстра можно объявить функцией в модели, чето типа 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
Как вариант
Niko
👀
в 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
Nastya
Trokhym
Trokhym
Если только не делаешь каких-то автодоменов и тд
Trokhym
Если делаешь то нужна действительно систематизация
Trokhym
Единственное это чтоб рили не /var/www/html (стандартный путь) чисто с точки зрения безопасности
Trokhym
Популярность Юи растет на глазах
SiZE
Anton
Йии
Дмитрий
Anton
Niko
я не согласен
Trokhym
Там смотря как сесюрити и чрут настраивать будешь
SiZE
окей, понял
Trokhym
SiZE
я не согласен
upwork:
Laravel Framework - 511
Laravel - 739
Yii - 130
Yii2 - 45
:(
Niko
👻
ну так а в ошибке у тебя что
👻
он не может определить экшен 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
Antony
public function actions()
{
return [
'options' => [
'class' => 'yii\rest\OptionsAction',
],
];
}
Antony
Ну и собстенно все запросы с OPTIONS можно слать на 1 экшен.
👻
так это тебе после выборки делать надо
👻
можешь как вариант бехейвер напидалить который сам будет все делать
👻
ну или перевести поле в датетайм и не морочить себе голову :)
Misha
перед тем как передать модель в вид update , преобразовать integer в нужный формат даты?
👻
да
Misha
👻
или у тебя будет 2 события 1 beforeSave 2е afterfind
на счет второво точно не уверен но помоему так
👻
ну если у тебя будет много где такое пиши бехавиор
Misha
Та только в этой таблице