• Почему стали популярны less, sass, ruby on rails, bower, grunt? И зачем они нужны?

    @Spaceoddity
    Почему стали? От лени и нежелания думать своим мозгом.
    Популярны они сталит благодаря продвижению Гуглом, Яндексом и иже с ними всяких "стандартов написания кода". При том, что и Яндекс и Гугл в этом плане очень далеки от идеала.
    Эти фреймворки хороши для сквозной разработки крупных проектов, когда все участники хорошо знакомы с данными методами, давно сотрудничают и т.п. Т.е. для тех же крупных компаний. При том, что в большинстве крупных компаний всё-таки имеются собственные стандарты.
    Ну а остальные уже, как обезьяны, подхватили. И требуют БЭМ, SASS, Angular для статичного одностраничника. Начинаешь выяснять для чего заказчику всё это надо - "а мне так наш дизайнер посоветовал"... Или когда берёшься доделывать чужой проект с кучей недоделанных хвостов в SASS - то ещё удовольствие и "оптимизация написания кода" - тупо вручную текстовым поиском приходится по фалам искать потерявшиеся переменные.
    Сама настройка, выработка общих стандартов и синтаксиса для этих фреймворков - занимает кучу времени.
    Так что по большому счёту вы ничего не пропустили. Браузеры все равно не понимают SASS и иже с ним))
    Пишите как вам удобнее. Если клиент настаивает - попробуйте выяснить причины такой настойчивости. Если случай клинический - шлите лесом!
    Ответ написан
    6 комментариев
  • Как сделать древовидный список в Yii2?

    @LAV45
    class Menu extends ActiveRecord
    {
    // ...
        public static function getList()
        {
            $data = static::find()
                ->select(['id', 'parent_id', 'title'])
                ->orderBy('parent_id ASC')
                ->asArray()
                ->all();
    
            $sort = new SortList([
                    'data' => $data,
                    'prefix' => '------',
            ]);
            $sortList = ArrayHelper::map($sort->getList(), 'id', 'title');
            return $sortList;
        }
    }
    
    class SortList extends Object
    {
        public $data;
    
        public $prefix = '   ';
    
        protected function getPath($category_id, $prefix = false)
        {
            foreach ($this->data as $item) {
                if ($category_id == $item['id']) {
                    $prefix = $prefix ? $this->prefix . $prefix : $item['title'];
                    if ($item['parent_id']) {
                        return $this->getPath($item['parent_id'], $prefix);
                    } else {
                        return $prefix;
                    }
                }
            }
            return '';
        }
    
        public function getList($parent_id = 0)
        {
            $data = [];
    
            foreach ($this->data as $item) {
                if ($parent_id == $item['parent_id']) {
                    $data[] = [
                        'id' => $item['id'],
                        'title' => $this->getPath($item['id'])
                    ];
                    $data = array_merge($data, $this->getList($item['id']));
                }
            }
    
            return $data;
        }
    }
    Ответ написан
    Комментировать