Олег
Ох, а это-то зачем?
Андрей
Олег
Надеюсь, к релизу это поправят...
Dmytro
Надеюсь, к релизу это поправят...
Нет, __class мы пока решили оставить. https://www.facebook.com/groups/yiitalk/permalink/10156431885757150/?comment_id=10156432311912150&comment_tracking=%7B%22tn%22%3A%22R2%22%7D
Dmytro
Там Саша написал причины
Alexey
Зря убрали ::className()
Dmytro
Dmytro
Чем он лучше ::class или get_class()?
who are you
Олег
Чем он лучше ::class или get_class()?
Только тем, что нельзя сделать $object::class. Если использовать get_class(), а $object === null, то get_class() вернёт не то. Правда, с 7.2 это поправили и get_class() в таком случае будет ругаться. Так что отсутствие ::className() я, скорее, приветствую.
Dmytro
> Если использовать get_class(), а $object === null, то get_class() вернёт не то
null::className() тоже будет не очень корректно работать ;)
Олег
Это будет ошибка, и это норм. А с get_class() до 7.2 ошибки не будет.
Alexey
я в модулях такой хак часто юзал ;-0
Dmytro
Звучит странно. При попытке узнать класс объекта, прикидываться другим классом?)
Олег
В любом случае до повсеместного распространения 7.2 придется теперь использовать какой-нибудь свой хелпер.
Dmytro
Alexey
Alexey
в любом случае решаемо (:
who are you
надо подарочки на 8 марта уже искать а мы в чате торчим 😐
Valentin
Нужна CRM на YII, для быстрого старта, есть у кого готовое?
Valentin
Если есть что-то реальное, можем купить, и взять разработчика на доработку и поддержку
who are you
фреймворк на то и фреймворк что CRM пишется под задачи заказчика, а вам нужно готовое, это не здесь
The Ant
Сергей
Добрый день!
Постоянно использую композитные формы Дмитрия Елисеева (https://github.com/ElisDN/yii2-composite-form).
Столкнулся с ситуацией, когда не смог их применить :(
Ситуация следующая. Форма создания заказа в админке:
• input:text Адрес доставки
• radio Новый покупатель или существующий
• (новый покупатель) 'input:text' Имя
• (новый покупатель) 'input:text' Телефон
• (существующий покупатель) 'select' Выбор покупателя.
Соответственно у меня есть отдельно форма для нового покупателя (имя, телефон) и форма для выбора покупателя (покупатель).
Я хочу сделать композитную форму, в которой есть:
• Поле "Адрес доставки"
• Поле выбора "Новый покупатель или существующий"
• Форма "Новый покупатель"
• Форма "Существующий покупатель"
И тут появляется две проблемы:
*Проблема раз*
Метод load композитной формы вернёт false, если данных по какой-то из вложенных форм нет (а одной из форм, не будет, так как они подгружаются на фронте аяксом в зависимости от поля выборы "Новый/существующий покупатель").
Как по мне это не правильное поведение. Ведь логика стандартного load в модели — если есть хотя бы одно поле из этой формы, то вернуть true. А сейчас получается true возвращается только в случае, если есть ВСЕ формы.
*Проблема два*
При валидации будут проверены ВСЕ формы. Никак нельзя задать условия - какие формы проверять, а какие нет.
Хочется, чтобы был некий аналог when для правил валидации, только на уровне вложенных форм.
И решить эти проблемы не меняя сам код композитных форм (например, отнаследовавшись и переписав метод) никак нельзя.
Собственно вопрос... Может я загнался в логике и не вижу более простого решения? :)
Dmitriy
Пингани Елисеева, он тут есть.
Сергей
@elisdn Пинг
Dmitry
Олег
То есть, более глобальных изменений, позволяющих DI "работать с любыми классами" нет? Только возможность свойство $class назачать появилась?
PowerAxis
Dmitry
Сергей
@poweraxis @elisdn Сделал вот: https://github.com/vjik/yii2-composite-form/blob/master/src/CompositeForm.php
1) Изменено поведение функции load(). Если есть данные хотя бы по одному полю формы или хотя бы по одной вложенной форме — возвращается True, в противном случае возвращается False.
2) Добавлена функция internalFormsWhen(), позволяющая задать условие: работать с формой или нет.
Пример:
class CreateForm extends CompositeForm
{
public $kind;
public function __construct($config = [])
{
$this->formA = new FormA();
$this->formB = new FormB();
$this->formC = new FormC();
$this->formD = new FormD();
parent::__construct($config);
}
protected function internalForms()
{
return ['formA', 'formB', 'formC', 'formD'];
}
protected function internalFormsWhen()
{
return [
[
'formB',
function () {
return $this->kind = 1;
}
],
[
['formC', 'formD'],
function () {
return $this->kind = 2;
}
],
];
}
public function rules()
{
return [
['kind', 'in', 'range' => [1, 2]],
];
}
}
Форма A будет всегда обрабатываться.
Форма B — когда kind=1.
Формы C и D — когда kind=2.
Dmitry
Поменял метод load().
who are you
Сергей
who are you
лучше бы назвали - составные формы или сложные, композитные - сразу не сообразишь чо это
Сергей
Ну в целом суть-то отражает)
who are you
я гуглил когда нужно было чот аналогичное - композитные даже не вспомнил слово 😄
Serge
Ребята, а есть yii2 дополнение для работы с Гугл драйв?
Сергей
flysystem и к нему ещё поищи расширение для google drive
Сергей
https://github.com/creocoder/yii2-flysystem
Сергей
Вот например: https://github.com/la-haute-societe/yii2-flysystem-google-drive (просто загуглил, сам не пользовал)
Serge
Dmytro
Alexander
в текущем контейнере нет нормальной поддержки конструкторов и вызовов методов
Alexander
в отдельном есть
Alexander
поэтому конфижить можно что угодно и как угодно
Alexander
в 2.0 многое можно, но то, что не сделано под Yii изначально, не очень удобно
Михаил
Коллеги, приветствую.
кто-нибудь встречал решение работающую с Asterisk AMI или сразу с freepbx?
🛸
Всем доброго утра ! Таблица такая есть:
[id, username, sum]
там лежат такие строки:
1)
- 1
- test1
- 10.00
2)
- 2
- test2
- 5.00
3)
- 3
- test1
- 2.00
надо запрос сделать к бд, такой чтобы у test1 получилась сумма 10.00 + 2.00. Те в результате
test1 => 12.00, test2 => 5.00
Подскажите пж как сделать. groupBy если делать то как сложить. Задумался, ищу ответ в Интернет и сразу тут вопрос задал 😉
Ivan
Это базис SQL
Ivan
Group by и в select пишется SUM(sum)
🛸
спс)
Erzhigit
Салам коллеги
Erzhigit
не могу зайти на gii генератор
Erzhigit
сайт на хостинге заливал
Erzhigit
как можно теперь зайти ?
Sanzhar
@tagay_e Там проверка на ip-шник
Sanzhar
только локально пропускает
Sanzhar
уберешь проверку, будет и на хостинге
Erzhigit
проверка айпи в конфиге ?
Erzhigit
Спасибо!
Eugene
Ребята, в GridView строки с данными одна из строк с датой, как можно сравнить значение одной строки со следующей и если даты совпадают то задать им один background?)
who are you
Яваскрипт слыхал?
who are you
Это самое простое что можно сделать
Eugene
а rowOptions мне не поможет?
Eugene
Сергей
оно не хранится - сам сохраняй)
Сергей
Что-то вроде:
$prevValue = null;
…
'rowOptions' => function ($model, $key, $index, $grid) use ($prevValue) {
$options = [];
if ($prevValue == $model->value) {
$options = ['class' => 'highlight'];
}
$prevValue = $model->value;
return $options;
}
Eugene
Pavel
Я делаю форму для восстановления пароля, и соответсвенно у меня два вью: для емэйла и для пароля, я могу как-то в одном экшоне проверить что пост пришел с определенной?
Pavel
Или мне делать раздельные модели