• Как в yii2 выводить записи используя постраничную навигацию?

    webinar
    @webinar Куратор тега Yii
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Максим Федоров все верно сказал, как альтернатива:
    www.yiiframework.com/doc-2.0/yii-data-pagination.html

    Ну и можно использовать ActiveDataProvider без виджетов GridView и ListView. Так как он может вернуть выше предложенный класс Pagination, в паре с LinkPager.
    //экшен
    $query = Post::find();
    $dataProvider = new ActiveDataProvider([
        'query' => $query,
        'pagination' => [
            'pageSize' => 20,
        ],
    ]);
    //вьюха
    foreach ($dataProvider->getModels() as $model) {
       echo $model->id;
    }
    echo LinkPager::widget([
        'pagination' => $dataProvider->pagination,
    ]);
    Ответ написан
    5 комментариев
  • Как создать собственную IP-телефонию?

    opium
    @opium
    Просто люблю качественно работать
    Все умеет Астерикс и ему подобные
    Ответ написан
    Комментировать
  • GIT ERROR 403 как исправить?

    BuriK666
    @BuriK666
    Компьютерный псих
    используйте ssh
    git@github.com:ArturShalokhin/ITMO-WEB-dev.git
    Ответ написан
    8 комментариев
  • Как установить yii 2 на openserver?

    NoizeMC
    @NoizeMC
    junior PHP (Yii2) разработчик
    Понимаю, что вопрос был задан давно, но поиск все еще приводит на эту страницу. Сегодня начал изучать yii2 и столкнулся с той же проблемой. Возможно, кому-то поможет.

    Решение же оказалось очень простым.
    1. В Openserver уже встроен Composer, его устанавливать не нужно
    2. Из первого пункта следует, что для установки yii нужно использовать только команду composer

    Пример:
    В официальном руководстве для установки yii2 нужно сделать:
    php composer.phar global require "fxp/composer-asset-plugin:~1.1.1"

    в консоли openserver вам нужно набрать ТОЛЬКО это:
    composer global require "fxp/composer-asset-plugin:~1.1.1"

    Дальше вы набираете соответственно:
    composer create-project yiisoft/yii2-app-basic basic 2.0.9

    Те php composer.phar меняется на composer и все работает

    PS при выполнении composer create-project yiisoft/yii2-app-basic basic 2.0.9 лучше перейти в корневую папку вашего сайта или указать адрес при создании, например так:
    composer create-project yiisoft/yii2-app-basic domains/internet-shop/basic 2.0.9

    При это создатся папка internet-shop в стандартном Openserver хранилище domains, где будет размещен базовый yii2. Имя basic конечно тоже можно поменять.

    Для того, чтобы настроить Openserver для запуска проекта на yii2 в браузере вида shop.ru вместо shop.ru/basic/web
    советую обратиться к этой статье, тут два простых решения
    Ответ написан
    Комментировать
  • Как написать "левый" и "правый" LIKE в ActiveQuery Yii2?

    Akdmeh
    @Akdmeh
    PHP, Yii2, Music
    www.yiiframework.com/doc-2.0/yii-db-query.html#whe...

    For example, ['like', 'name', '%tester', false] will generate name LIKE '%tester'.
    То есть, нужно просто написать ['like', 'username', '89%', false]

    Вывод - внимательно читайте документацию.
    Ответ написан
    3 комментария
  • Как отобразить номер телефона через Html helper?

    Самый простой вариант - создать свой класс, наследованный от Html и использовать его во всем проекте:
    <?php
    namespace app\helpers;
    class Html extends \yii\helpers\Html
    {
        public static function phone($phone, $options = [])
        {
            $options['href'] = 'tel:'.$phone;
            if (!isset($options['class'])) {
                $options['class'] = '';
            }
            return static::tag('a', $phone, $options);
        }
    }


    А дальше несколько вариантов:
    • Добавить еще несколько удобных методов и оформить все это в виде пакета composer, пример.
    • Сделать pull-request в yii2 или тому же Картику.
    Ответ написан
    5 комментариев
  • Можно ли разобраться в ООП в ходе изучения YII2?

    gzhegow
    @gzhegow
    aka "ОбнимиБизнесмена"
    Да как сказать Yii - это ящик с гаечными ключами. Можно ли по ящику понять - зачем ключи? Ну можно, если долго ключи использовать как пишут разработчики - то и поймешь со временем, но есть риск провалится в "делаю как сказали, почему - не знаю".

    Коли про ООП вопрос: разработчикам нужно было писать меньше повторяющегося кода, чтобы не менять одно и то же по 10 раз. Давай по-порядку.

    Представь ассоциативный массив (ключ-значение).
    Теперь представь функцию, любую, пусть будет abs() - число по модулю.
    А теперь забрось эту функцию в свой массив на место какого-нибудь ключа, то есть у тебя как будто получится $array["abs"], где лежит сама функция.

    В чем отличие функции от других данных? Данные ты можешь записать, а можешь считать. А функцию ты еще и выполнить можешь. Таким образом когда ты ее вкинул в массив, у тебя лежит не функция там, а ее заготовка, под выполнение. И ты можешь ее вызвать но уже не как abs(), а как $arr['abs']() - что будет выглядеть одинаково (под капотом все сложнее, но пока забей, оно тебе не надо)

    А теперь представь что у тебя есть десять таких массивов $arr. И что, в каждый теперь совать функцию, которую ты только что запихнул в первый? Нет, зачем. Для этого существуют "классы" - которые описывают внешний вид будущего "массива".

    Таким образом ООП это когда ты сначала описываешь внешний вид массива, а потом создаешь вот эти "улучшенные массивы" по описанному виду. Но это только малая часть всего движа.

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

    По большей части многие из этих фишек и движняков являются плодом больной фантазии ума разработчиков, требующих самореализации. Ну то есть скачать прайс-лист экселя и разобрать можно и на массивах, слить два прайс-листа в один по нескольким полям - тоже можно на массивах.

    Вся эта канитель с ООП - это когда тебе действительно нужна реактивная артиллерия - ты хочешь написать код в который - кого не посади - дибила или умника или еще кого - он не сможет ничего сломать. Но он все равно сможет, поэтому часто работа над ООП вываливается в цикл в стиле "правлю то что никому не пригодится, но я знаю что однажды это упадет и потому правлю".

    Об ООП стоит думать как средство уменьшения числа кода. Если у тебя к примеру два поставщика и два разных файла выгрузки, а действия в них одни и те же - можно прибегнуть к ООП, сделав тип "Поставщик" и описав в нем - что он умеет делать над своими "экземплярами-объектами-улучшенными_массивами" и тд.

    Прежде чем считать, что ты не сможешь без ООП тебе нужно понять, что любая вещь МОЖЕТ быть сделана без ООП. Просто количество путаницы если ты бросишь этот код и вернешься к нему через месяц и уже не помнишь что где и когда - будет больше. Классы создают некую описательную структуру того, что происходит и оттого часто в крупных проектах писать на ООП длиннее дольше и тяжелее, чем без ООП.

    То есть штуку разрабатывали чтобы писать меньше, а на деле для понимания все переменные в верблюде пишут, и в итоге кода еще больше становится, но он типа "понятный". А потом они будут перебирать дорогих сотрудников, потому что дешевые этот понятный код не могут писать, тобто ребята копошаться в своих головах, а деньги приносят продажи потом. Не попадись в такую ловушку.

    ООП тебе понадобится, когда у тебя возникнет очень отчетливое чувство что "блин, вот язык этот какое дерьмо, мне так задрало вот эту штуку каждый раз заново писать, почему они сразу этого не сделали?" - вот тогда тебе надо заняться ООП, и тогда его будет легко понять.

    Я не про то, что типа "еще рано" и тд. Я про то, что есть куча вещей в которое можно отдать время, более интересных и полезных, чем погружаться с башкой в эту муть, которая на деле кроме чувства мнимого превосходства тебе ничего не даст. Просто делай как удобно, и только когда решишь своим массивам задавать поведение - типа "при присвоении ключа в поле `name` автоматически создать поле `code` с таким-то содержимым" - вот тогда реально можешь повкуривать что тут еще можно мутить.
    Ответ написан
    23 комментария
  • Yii2 Как в label вывести иконку?

    qonand
    @qonand
    Software Engineer
    Breadcrumbs::widget([
        'homeLink' => [
            'label' => "<i class=\"fa fa-home\" aria-hidden=\"true\"></i>"
            'encode' => false,
            'url' => Yii::$app->homeUrl
        ]
       ....
    ]
    Ответ написан
    Комментировать
  • Yii2 Как в label вывести иконку?

    webinar
    @webinar Куратор тега Yii
    Учим yii: https://youtu.be/-WRMlGHLgRg
    encodeLabels
    <?= Breadcrumbs::widget([
    'encodeLabels' => false,
    Ответ написан
    8 комментариев
  • Какое решение лучше для преобразования слов в html-код?

    webinar
    @webinar Куратор тега Yii
    Учим yii: https://youtu.be/-WRMlGHLgRg
    ПЕРЕДЕЛЫВАТЬ их можно целый месяц

    а можно сделать экшен в 15 строчек кода и сделать за 10-минут. Метод как предложил Exploding только сделать базу нормально, взять все записи из старой переложить правильно в новую в цикле.
    В yii это вообще не проблема, создаешь временно экшен:
    public function actionPerehrehyzchit(){
    $old = OldModel::find()->all();
    $errors = [];
      foreach($old as $one){
        $data = explode("|", $one->someAttr);
        foreach($data as $one_data){
            $new_model = new NewModel();
            $new_model->someId = $one->id;
            $new_model->imageName = $one_data;
            if(!$new_model->save()){
               $errors[$one->id][] = $new_model->errors;
            }
        }
      }
    echo '<pre>';
    print_r($errors);
    echo '<pre>';
    return 'я фсё, удали экшен';
    }
    Ответ написан
    1 комментарий
  • Какое решение лучше для преобразования слов в html-код?

    Exploding
    @Exploding
    wtf?
    В $data типа строка из цикла
    $data = explode("|", $data);
    $data = json_encode($data);

    Все. В $data теперь данные в json
    Ответ написан
    2 комментария
  • Yii2 получить записи GriwView?

    webinar
    @webinar Куратор тега Yii
    Учим yii: https://youtu.be/-WRMlGHLgRg
    ....
    [
      'attribute'=>'authorsBooks',
      'value'=>function($model){
          return implode(',',ArrayMap::getColumn($model->authorsBooks,'name'));
        }
    ]
    ...

    Можно в модели метод реализовать
    public function getAutorsString(){
      return implode(',',ArrayMap::getColumn($this->authorsBooks,'name'));
    }

    соответственно в gridView:
    ....
    [
      'attribute'=>'authorsBooks',
      'value'=>'autorsString'
    ]
    ...

    Второй вариант более логичен, так как избегает дублирования кода. Я так понимаю много где надо выводить.
    Ответ написан
    4 комментария
  • На чём рисовать SVG, какое программное решение?

    amux
    @amux
    alp.ac
    Зачем выдумывать велосипед?
    www.chartjs.org - Умеет обновлятся "на лету" и api довольно простое.
    Там и примеры есть.
    Ответ написан
    3 комментария
  • Как сделать чтобы приходили письма от mail.ru?

    Лучше что можно сделать - никогда на связываться с мейл.сру. Удалить там все аккаунты и забыть как страшный сон.
    Ответ написан
    1 комментарий
  • Какие советы дадите для создания игры для компьютера?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Взять и сделать интересную игру.

    822fbb3fc94d40fb88893e02bc61c3db.jpgНельзя вот так просто взять и сделать интересную игру.

    Советую промониторить рынок на востребованность типов и сюжетов игр аудиторией в разных странах, и т.д.
    Затем, берёте Unity3D (+VR) (и тучу денег) и делаете командой именно ту игру, какую хотите (со своей графикой/моделями и т.д.).

    Главное: это чтобы был интересный GamePlay, нелинейное развитие сюжета, умный и интересный AI у мобов, красивые и реалистичные графические и звуковые эффекты.
    Чтобы играя, человек "был мозгом полностью в игре, "жил там" и получал удовольствие от процесса (адаптивная сложность для каждого игрока), а не думал бы как пройти очередной уровень и почему он такой сложный.
    Ответ написан
    Комментировать
  • Какие советы дадите для создания игры для компьютера?

    sim3x
    @sim3x
    Умеете писать тексты?
    Учите питон и пишите текстовый квест
    Запускайте его в соцсети и мессенджеры
    Нет никакой серебрянной пули, чтоб за 10 лет стать EA
    Ответ написан
    Комментировать
  • Как сделать видеопривью на видео?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    ffmpeg мощнейший инструмент, я бы рекомендовал использовать именно его.

    Не совсем понятно, какой именно превью вы хотите делать из загруженных видео: то ли анимированный gif, то ли отдельные статичные кадры выдирать из видео - каждый отдельной картинкой. Но всё это делается именно ffmpeg'ом. Уточните задачу, я подскажу примерные параметры.

    Вкратце, ffmpeg это исполняемый файл, есть под Linux, Mac, Windows. Позволяет перекодировать видео, обрабатывать эффектами, создавать анимированные GIF'ы и пр. и пр.
    Ответ написан
    1 комментарий