• Как переписать роутинги с Apache на Nginx(разделение на backend\frontend)?

    @LAV45
    https://gist.github.com/LAV45/5f75aeb8f40f6ac4efa2

    Я обычно разделяю frontend и backend по разным субдоменам.
    http://site.com - frontend
    http://admin.site.com - backend
    Ответ написан
    Комментировать
  • Выбор лицензии для не свободного ПО?

    @LAV45
    www.ioncube.com - самая русская лицензия ))

    шифрует php скринты
    Не видел ни одного хостинга где бы не стояла библиотека для работы с зашифрованными файлами.
    Можно лицензировать под определенный IP, MAC, domein.com или *.domain.com.
    А так же на определенное время или до какой-то даты или просто не использовать ни одного из ограничений, а просто абфусцировать важные части кода.
    Ответ написан
    Комментировать
  • Как сделать древовидный список в 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;
        }
    }
    Ответ написан
    Комментировать
  • Почему на срабатывает валидатор в yii2?

    @LAV45
    Нужна ещё описать метод clientValidateAttribute, как пример можно глянуть тут =>
    https://github.com/yiisoft/yii2/blob/master/framew...

    ИЛИ

    Проблема в контроллере, вот рабочий пример =>
    public function actionCreate()
        {
            $model = new Menu();
            if ($model->load(Yii::$app->request->post()) && $model->save()) {
                return $this->redirect(['view', 'id' => $model->id]);
            } else {
                return $this->render('create', [
                    'model' => $model,
                ]);
            }
        }
    Ответ написан
    Комментировать
  • Как написать вложенный под запрос (php yii)?

    @LAV45
    При проектировании БД вам нужна учитывать все слабые и сильные стороны ActivRecord в Yii если вы отказываетесь от него и планируете самостоятельно формировать запросы используя тогда вам и карты в руки. Кроме вас самых вам на вряд ли кто-то сможет помочь.
    Ответ написан
    Комментировать
  • Yii2 цикл Join'ов, как?

    @LAV45
    Если я вас правильно понимаю тогда ваш запрос будет выглядеть как-то так:
    $data = Product::find()
    	->joinWith('table')
    	->where(['table.value_id' => [1, 2, 3]])
    	->asArray()
    	->all();

    Сам не понимаю почему такие sql сгенерировало :(
    SELECT `product`.* FROM `product` LEFT JOIN `table` ON `product`.`id` = `table`.`product_id` WHERE `table`.`value_id` IN (1, 2, 3);
    SELECT * FROM `table` WHERE `product_id` IN ('1', '2');


    Но я бы сделал вот так:
    $data = Product::find()
    	->with([
    		'table' => function(Query $q) {
    			$q->where(['value_id' => [1, 2, 3]]);
    		}
    	])
    	->asArray()
    	->all();

    SELECT * FROM `product`;
    SELECT * FROM `table` WHERE (`value_id` IN (1, 2, 3)) AND (`product_id` IN ('1', '2'));

    // print_r($data);
    Array
    (
        [0] => Array
            (
                [id] => 1
                [manufacturer_id] => 2
                [category_id] => 13
                [status] => 10
                [name] => фотокамера Canon SX 150 IS black
                [created_at] => 1395167522
                [updated_at] => 1395167679
                [table] => Array
                    (
                        [product_id] => 1
                        [value_id] => 1
                    )
            )
    
        [1] => Array
            (
                [id] => 2
                [manufacturer_id] => 2
                [category_id] => 29
                [status] => 10
                [name] => сумка
                [created_at] => 1395170865
                [updated_at] => 1395170865
                [medium_delivery] => 0
                [table] => Array
                    (
                        [product_id] => 2
                        [value_id] => 1
                    )
            )
    )
    Ответ написан
    Комментировать
  • Как перенести статьи с MODX на Yii2?

    @LAV45
    MaxKorz, это только в том случае если в самом MODx проставлены foreign key для mysql, но я ещё не встречал ни одного такого движка.

    Вам не нужно создавать БД похожую как у MODx вы можете взять её как есть и создать модели через gii. Если в БД будут прописаны foreign key тогда gii сам пропишет все связи между моделями иначе придется в ручную настраивать все связи.
    Ответ написан
    Комментировать
  • Как подключить поддомен для статики в Yii2?

    @LAV45
    config/main.php
    return [
    	'components' => [
    		'assetManager' => [
    			'baseUrl' => 'http://src.site.my',
    		],
    	],
    ];


    На выходе
    <script src="http://src.site.my/22478422/jquery.min.js"></script>
    Ответ написан
    Комментировать
  • (Yii2) Как инклудить View файл?

    @LAV45
    <?php include __DIR__ . '/blocks/right_block.php'; ?>

    По моему этот вариант ещё никто не удалял ;)
    Ответ написан
    Комментировать
  • Как хэндлить такие роуты в Yii2?

    @LAV45
    '/products/*'
    а где ты видел такой preg_match?
    '/products/.*' - по моему так должно сработать
    Ответ написан
    Комментировать
  • (PHP, Yii2) Куда грузить публичные файлы (аватары, картинки)?

    @LAV45
    Я бы добавил Common, Backend и Frontend ещё и папку Img которую бы вынес на суб-домен и раздавал бы картинки от туда.
    Ответ написан
    Комментировать