@yii2ru

Страница 1701 из 1721
Konstantin
21.10.2018
20:17:18
Что значит- нормально?

Aleksey
21.10.2018
20:19:00
На dev сервере через git hook был скрипт который делал git pull + yii migrate. Я только пушил и сразу видел изменения на деве. Делать автообновление на проде не решились. Вывод скриптов пишется в log файлы, которые доступны по http.

?? Vladimir
21.10.2018
20:24:32
Что значит- нормально?
Допустим делаю так. Тут команде допущена ошибка, чтобы получить ответ от системы который нужно отлавливать $output_pull = ''; exec("git puldl origin master", $output_pull); $message_pull = implode("<br>\r\n", $output_pull); mail('dev.vladimirkarpenko@gmail.com','Pull log', $message_pull);

В таком случае приходит пустое письмо, хотя я планировал получить сообщения об ошибке. Но тут скорее мне знаний php не хватает

Google
Aleksey
21.10.2018
20:26:22
может ошибка пишется в stderr?

git pull origin master 2>&1

пробуй

?? Vladimir
21.10.2018
20:29:21
пробуй
Помогло, спасибо

Вообще клиенты довольно экстравагантные. В их стиле рискнуть работоспособностью продакшена

Ещё немного пугает, когда они начинают присылать структуру таблиц. Или, что ещё лучше, они сами делают свои задачи, но не в правильной ветке

Konstantin
21.10.2018
20:33:00
может ошибка пишется в stderr?
функции читиают только stdout

нужно юзать popen(), либо перенаправлять вывод stderr в stdout

?? Vladimir
21.10.2018
20:34:06
нужно юзать popen(), либо перенаправлять вывод stderr в stdout
Как я понял, 2>&1 и занимается перенаправлением

Konstantin
21.10.2018
20:34:16
да

Aleksey
21.10.2018
20:34:40
https://www.opennet.ru/docs/RUS/bash_scripting_guide/c11620.html

Konstantin
21.10.2018
20:35:40
Сергей
22.10.2018
06:50:10


Google
Сергей
22.10.2018
06:50:15
GridView, а товары через hasMany и цикл вывожу обычной таблицей, теперь мне осталось сделать поиск, поиск состоит из одной строки, которая будет делать поиск по username, user id, product id, title product по username и user id я сделал без проблем, вот так if(!empty($this->customSearch)){ $query->andFilterWhere ( [ 'OR' , [ 'like' , 'username' , $this->customSearch ], [ 'id'=>(int) $this->customSearch ], ] ); } потом подключаю через $query = User::find()->with(["products"]); таблицу продуктов и делаю так if(!empty($this->customSearch)){ $query->andFilterWhere ( [ 'OR' , [ 'like' , 'username' , $this->customSearch ], [ 'id'=>(int) $this->customSearch ], [ 'products.id'=>(int) $this->customSearch ], [ 'like' , 'products.title' , $this->customSearch ], ] ); } но не хочет работать The SQL being executed was: SELECT COUNT(*) FROM "user" WHERE ("is_admin"=0) AND (("username" LIKE '%5%') OR ("id"=5) OR ("products"."id"=5) OR ("products"."title" LIKE '%5%')) ERROR: missing FROM-clause entry for table "products" LINE 1: ...n"=$1) AND (("username" LIKE $2) OR ("id"=$3) OR ("products"... подскажите пожалуйста тчо я делают не так)

Andrey
22.10.2018
07:31:51
joinWith('products')

Сергей
22.10.2018
08:50:01
joinWith('products')
решил это уже, а еще вопрос, почему когда я делаю вот так в search модели $query = User::find()->select(['user.*', 'product.*'])->joinWith(["products"]); и ожидаю что в $dataProvider->models будет user и к нему product, но приходит только данные по пользователям, а для продуктов нужно получать отдельно через hasMany еще раз?

Jack
22.10.2018
09:15:48
Всем привет Есть на странице сайдбар на некоторых страницах он изменяется. Последовательность блоков, отсутствие некоторых и тп. Сильно заебало постоянно прокидывать через контроллер данные для вывода в сайдбар тем более что на многих страницах он одинаковый

Подскажите как лучше сделать ибо раньше не работал с yii и вообще с мвс

Jack
22.10.2018
09:18:18
виджеты, наверное
Виджеты есть и собираются через отдельный класс билдера

Вопрос именно в том нормально ли будет не прокидывать через контроллер а через сам компонент билдера

Мб глупый вопрос

Интересует именно нормальная ли это практика

Vadim
22.10.2018
10:01:58
Парни, как навешать ошибку валидации на поле? У поля name=RatingForm[data][general-data][5], в валидации делаю так $this->addError("RatingForm[data][general-data][5]", 'Ошибка');, но не срабатывает



Aleksey
22.10.2018
10:03:16
Используй $attribute

Vadim
22.10.2018
10:04:10
Используй $attribute
$this->addError($this->$attribute['general-data'][Rating::TYPE_JURIST_ADD_TO_CANDIDATES], 'Ошибка');

если так то тоже нет

Vadim
22.10.2018
10:05:40
во дичь то бро
Либо кто скажет как сделать валидацию для динамических полей в форме?

Ad.x ??
22.10.2018
10:06:11
в доке все есть же

да и как ты динамические поля делаешь?

есть валидатор each, которым можно прекрасно валидировать массивы всякие разные. динамические как раз массивы должны быть

Google
Aleksey
22.10.2018
10:11:28
$this->addError($this->$attribute['general-data'][Rating::TYPE_JURIST_ADD_TO_CANDIDATES], 'Ошибка');
public function validateAttribute($model, $attribute) { $value = $model->$attribute; if (!is_array($value) && !$value instanceof \ArrayAccess) { $this->addError($model, $attribute, $this->message, []); return; } Из исходников. В валидатор передается атрибут модели, который проходит проверку. Вот ему и вешается ошибка.

Andrey
22.10.2018
10:11:41
решил это уже, а еще вопрос, почему когда я делаю вот так в search модели $query = User::find()->select(['user.*', 'product.*'])->joinWith(["products"]); и ожидаю что в $dataProvider->models будет user и к нему product, но приходит только данные по пользователям, а для продуктов нужно получать отдельно через hasMany еще раз?
joinWith() - их уже получает в связи products если нужно получить результат как возвращает БД, то можно использовать ->asArrray() (возможности объектов будут потеряны) для связи hasOne для необходимых полей можно было бы создать свойства у модели User, а в вашем случае даже не представляю как вы собираетесь работать с множественной связью в одном объекте через свойство...

я в beforeAction выполняю действие, в afterAction отменяю это действие, а вот если возникает ошибка afterAction уже не выполняется. как можно сделать отмену действия в случае возникновения ошибки?

Andrey
22.10.2018
10:26:37
ребят определение города, страны, языка по IP есть годнота?

Vadim
22.10.2018
10:29:37
public function validateAttribute($model, $attribute) { $value = $model->$attribute; if (!is_array($value) && !$value instanceof \ArrayAccess) { $this->addError($model, $attribute, $this->message, []); return; } Из исходников. В валидатор передается атрибут модели, который проходит проверку. Вот ему и вешается ошибка.
У меня есть атрибут $data. В форме полей может быть хоть сколько, RatingForm[data][0], RatingForm[data][1], ... , RatingForm[data][n]. И вот на data я могу навесить ошибку, и он ее добавит на абсолютно все поля, а вот как задать ошибку для RatingForm[data][35] например я не понимаю.

Aleksey
22.10.2018
10:31:03
ребят определение города, страны, языка по IP есть годнота?
Зачем язык? Браузеры говорят какие языки их пользователь предочитает в каждом запросе.

$this->addError('data.35', 'ErrorText')
Я думаю $this->addError('data[35]', 'ErrorText') , но это не точно.

Alexander
22.10.2018
10:32:45
Я думаю $this->addError('data[35]', 'ErrorText') , но это не точно.
Не помню точную формулировку, но что-то такое у меня где-то работало

Mikhail
22.10.2018
10:37:04
добрый день. Есть AR модель, нужно одно из полей расчитывать на основании данных других перед сохранением. Куда идеологически верно этот расчет поместить? В beforeSave?

Andrey
22.10.2018
10:39:06
Как вариант - в сессию записать, если ошибка, а в afterAction проверять
как раз проблема в том что при возникновении ошибки afterAction не вызывается..

и речь идет о консоли, там и сессии то нет

я вижу только вариант переопределять runAction и вызывать $action->runWithParams() внутри try{}catch{} - но что-то такой подход мне не нравится

Aleksey
22.10.2018
10:42:28
Alexander
22.10.2018
10:44:49
Ща поищу

Google
Andrey
22.10.2018
10:45:38
А действие в БД выполняется? Я просто оборачивал в транзакцию, а перед этим ставил дефолтное поведение rollback
в БД но смысл действия как раз в обратном: не дать повторно запустить action, в БД ключ который запрещает повторный запуск, а в afterAction или при ошибке его нужно удалять.

Andrey
22.10.2018
10:46:45
Alexander
22.10.2018
10:46:58


Andrey
22.10.2018
10:46:59
https://habr.com/post/193024/
я такое нашел) https://github.com/lysenkobv/yii2-geoip пока пробую

Aleksey
22.10.2018
10:49:05
транзакцию в beforeAction )
ааа... в befireAction начинаем транзакцию, в after делаем commit

after не выполнится, значит автоматом rollback

Andrey
22.10.2018
10:50:00
если обернуть в тразакцию, то автоматический rollback отменит запись ключа
насколько я понимаю транзакции, то данные не попадут в БД пока не будет подтверждение транзакции...

Aleksey
22.10.2018
10:50:28
только нужно убедиться что автоматом именно rollback SET AUTOCOMMIT=0

насколько я понимаю транзакции, то данные не попадут в БД пока не будет подтверждение транзакции...
для текущего подключения данные "виртуально" попадают в БД. Но пока они не зафиксированны (comit) для других подключений их нет.

Andrey
22.10.2018
10:52:03
так мне то как раз нужно чтобы они попали в БД для других подключений

Slava
22.10.2018
10:52:07
всем привет есть ли возможность установить свойство класса контроллера для всех контроллеров приложения, не изменяя их код? мне нужно установить для всех контроллеров свой класс для свойства public $serializer может как-то через DI ?

Aleksey
22.10.2018
10:53:14
тогда через кастомное событие както... в обработчике откат действия.

Vadim
22.10.2018
10:54:06
Хммм, странно почему ошибка у тебя не падает, ты же туда массив передаешь а нужна строка. У меня сразу падает

Google
Vadim
22.10.2018
11:03:22
а как ты пытаешь прочитать(использовать) эту ошибку?
Просто на фронах поле подсветить и ошибку под ним вывести, по стандарту все

Andrey
22.10.2018
11:03:41
ну так код покажи...

Vadim
22.10.2018
11:05:24


И получаю htmlspecialchars() expects parameter 1 to be string, array given

Aziz
22.10.2018
11:07:23
привет: может кто помочь с настройкой cloudfire, возможно оплата)

Gubaydullin
22.10.2018
11:09:52
Добрый день не могли бы вы помочь с регулярным выражением ^([^\s]+)([,][^\s]*)$ привет,как,дела привет я хотел бы чтобы "привет" также проходил спасибо

Павел
22.10.2018
11:10:45
Поставь * После [,]

А чо за изврат с ^\s

Gubaydullin
22.10.2018
11:12:13
как можно объединить вместе условия [,] и [^\s] в одном выражении

типа [,^\s] вот так же нельзя(

Павел
22.10.2018
11:13:16
есть же \S

И ващето по правилам русского языка после , должен идти пробел

Gubaydullin
22.10.2018
11:17:33
если все контроллеры наследуются от \yii\web\Controller - то можно переопределить этот класс в настройках приложения 'container' => ['definitions' ...]
можно создать BaseController, который наследуется от Controller, и автозаменой Controller везде заменить на BaseController -> profit

мне нужно чтобы в админке вводили привет,как,дела привет но не привет как дела

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