rusline: попробуйте phpstorm. саблайм нужно сильно плагинами обвешать, чтобы он на ide стал похож. как редактор а-ля "быстренько пофиксить пару строк" он хорош, но вести на нем разработку, особенно когда вы новичек очень неудобно
rusline: ну так в чем проблема? там же ясно сказано: не найден класс. скорее всего не подключен неймспейс. Вы каким редактором пользуетесь? подозреваю что какой-то вариацией блокнота? Возьмите нормальный редактор типа phpstorm'a и тогда половина подобных вопросов отпадет еще на этапе написания кода, т.к. ide будет истошно орать об ошибках
а вынести все что не нужно выше document_root не получится? например как в yii сделано. nginx'у указывают смотреть в папку web или www и тогда получается, что снаружи можно получить доступ только к тому, что лежит в папке web или www, а все служебные вещи в том числе и сам фреймворк снаружи недоступны. пример тот же https://github.com/samdark/yiiframework-ru nginx смотрит в папку www
Руслан как минимум потому что меньше писанины, плюс сразу понятно что происходит, плюс array_filter это встроенная функция и как бонус ей вторым параметром можно передать callback для фильтрации
Lumore Все правильно, SluggableBehavior навешено на BaseActiveRecord::EVENT_BEFORE_VALIDATE поэтому оно и не срабатывает.
К вопросу не относится, возможно будет полезным:
1)$model->user_id = Yii::$app->user->id; скорее всего можно заменить на BlameableBehavior
2)Использование базовых классов типа BaseInflector, BaseArrayHelper и т.д. не рекомендовано. www.yiiframework.com/doc-2.0/guide-helper-overview.html
сгруппируйте $products по product_sku и перебирайте каждую группу. если в группе найден товар с картинкой - прекращаем перебор группы, если не найден - используем последнюю позицию группы. можно попробовать внутри каждой группы поиграться с выборками по колонкам типа array_column
с точки зрения математики то же самое, но зачем мудрить со входящими данными, если есть встроенная операция? Скорее всего магическая цифра 4 в коде использоваться не будет, вместо неё будет переменная и тогда ваш вариант будет выглядеть как MyModel::find()->where(['>','id',$id-1])->one(); что уже не так очевидно как MyModel::find()->where(['>=','id',$id])->one();