• Что делают флаги lint-staged?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Очевидно, это обёртка. Обычно над eslint. Вот в документацию eslint и смотрите.
    Ответ написан
    2 комментария
  • Куда отправится форма если action пусто?

    NikitaTratorov
    @NikitaTratorov
    CTO
    С аяксами есть особенность:
    В safari - отправится на "/", т.е. на главную
    В остальных браузерах - на текущую страницу (URL), на которой форма открылась
    Ответ написан
    Комментировать
  • Как работать с полученным HTML во vue?

    Можно просто повесить на эти кнопки событие, а в нем прослушку через event bus. А в нужном компоненте слушать его в mounted и отправлять в нужный метод
    На скорую руку накидал, чтобы суть была понятна:
    main.js
    import Cart from './components/Cart'
    import EventBus from './common/event-bus.js';
    
    var app = new Vue({
        el: '#app',
        components: {
            Cart
        },
        mounted() {
           document.addEventListener('click', addProduct, false);
           function addProduct(event) {
                if (event.target.classList.contains('btnToCart')) {
                      EventBus.$emit('changeCart', 'твой атрибут сюда');
                }
           }
        }
    })


    cart.vue

    import EventBus from '../common/event-bus.js'
    export default {
        data() {
            return {
                content: {}
            };
        },
        mounted() {
            EventBus.$on('changeCart', array => {
                this.addProduct(array);
            });
        },
        created() {
        },
        methods: {
            addProduct(newItem){
               console.log(newItem)
            },
        }
    }
    Ответ написан
    Комментировать
  • Как работать с полученным HTML во vue?

    Kozack
    @Kozack Куратор тега Vue.js
    Thinking about a11y
    Или можно затащить в рантайм компилятор шаблонов. И возвращать с сервера именно
    <div class="product" v-for="item in poducts" :key="item.id">
      <div class="product__name">{{ item.name }}</div>
    
      <button @click="test(item.id)">кнопка</button>
    </div>
    , компилировать это на лету и монтировать как компонент.

    Но это тоже не очень хорошо. И годится только как запасной вариант, если ничего другого сделать невозможно.
    Ответ написан
    Комментировать
  • Как работать с полученным HTML во vue?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Лучше никак. Измените api так, чтобы получать json вместо html, и создавайте разметку из данных средствами vue.

    Ну а так-то можно делегированием воспользоваться:

    <div v-html="свойствоСодержащееHTML" @click="onClick">

    methods: {
      onClick(e) {
        if (e.target.tagName === 'BUTTON') {
          const id = e.target.closest('.product').dataset.id;
          ...
        }
      },
      ...
    },

    https://jsfiddle.net/grfo05vm/
    Ответ написан
    Комментировать
  • Как получить асинхронные данные прямо в data?

    @alexprowars
    Рускоязычная документация некорректная, используйте английскую https://nuxtjs.org/guide/async-data
    Ответ написан
    1 комментарий
  • Как браузер делает шрифт жирным?

    @Lord_Dantes
    Это все равно не та жирность шрифта которая изначально задумана в самом шрифте. Если вы подключите жирный шрифт изначально и сравните его с браузерным вы заметите разницу в качестве обрисовки контура(или это только у меня такой эффект есть). Условно говоря, font-weight: bold почти тоже самое что и <b></b>
    Ответ написан
    2 комментария
  • Modx как инициализировать объект fenom в консоле?

    ig0r74
    @ig0r74
    MODX-разработчик
    Тебе нужно инициализировать pdoTools и потом уже использовать fenom:
    <?php
    /** @var array $scriptProperties */
    /** @var pdoFetch $pdoFetch */
    $fqn = $modx->getOption('pdoFetch.class', null, 'pdotools.pdofetch', true);
    $path = $modx->getOption('pdofetch_class_path', null, MODX_CORE_PATH . 'components/pdotools/model/', true);
    if ($pdoClass = $modx->loadClass($fqn, $path, false, true)) {
        $pdoFetch = new $pdoClass($modx, $scriptProperties);
    } else {
        return false;
    }
    $pdoFetch->addTime('pdoTools loaded');

    Но сомневаюсь, что у тебя получится создать модификатор в консоли. Ты можешь создать его в плагине и потом использовать в консоли.
    Если тебе это нужно для отладки, то пиши в журнал ошибок любую отладочную информацию из плагина:
    $modx->log(1, 'test: ' . $test);
    $modx->log(1, 'array: ' . print_r($array, 1));
    Ответ написан
    Комментировать
  • Как в modx отправить ajax запрос используя компонент?

    i__dmitry
    @i__dmitry
    Weaving a web
    А вы в своем файле public_files/components/ajaxService/index.php подключали $modx? Ведь в сниппете он используется.
    // Подключаем
    define('MODX_API_MODE', true);
    require $_SERVER['DOCUMENT_ROOT'].'/index.php';
     
    // Включаем обработку ошибок
    $modx->getService('error','error.modError');
    $modx->setLogLevel(modX::LOG_LEVEL_INFO);
    $modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML');
     
    //Проверяем работу:
    if ($res = $modx->getObject('modResource', 1)) {
        print_r($res->toArray());
    }
    Ответ написан
    2 комментария
  • Как в vagrant через общие папки сделать права доступа?

    @vitaly_il1
    DevOps Consulting
    Я думаю что тут

    owner: "root", group: "root"

    надо использовать пользователя под которым бежит nginx - www-data.
    Ответ написан
    3 комментария
  • Почему не приходят данные через контекст потока функции file_get_contents?

    TheRikipm
    @TheRikipm
    Backend middle
    Если вы используете встроенный веб-сервер то запрос к самому себе посылать нельзя.

    Из документации:

    Веб-сервер выполняет только один однопоточный процесс, поэтому приложения PHP будут останавливаться, если запрос заблокирован.


    В данном случае сервер не может отправить запрос к localhost:4000/handler.php потому-что для начала ему нужно завершить запрос к файлу где у вас выводится file_get_contents(). В то-же время он не может завершить запрос к файлу с file_get_contents() потому-что для этого нужно завершить запрос к localhost:4000/handler.php, в итоге сервер висит.

    Переходите на Apache или Nginx
    Ответ написан
    6 комментариев
  • Какой php фреймворк учить?

    @Vasiliy_M
    1) В чем смысл фрейморков?
    За тебя уже все написано. Каркас, CRUD/ORM и масса плюшек.

    2) Какой учить первый?
    никто не даст ответа. Индустрия сходит с ума, территория PHP проклята - одному работодателю нужен один фреймворк, другому - другой. Угнаться за всем этим - нереально. В идеале - искать работодателей, готовых вас "вырастить", т.е. взять лишь с минимальным набором знаний, например, теоретических. Все фреймворки знать невозможно. А если и возможно, то это лишь временно - нереально всю жизнь знать все возможности десятка пхпшных фреймворков.

    3) Почему способ с самописным роутером, плохой?
    Фреймворк - это не только роутер. Можно перефразировать вопрос и спросить:
    Почему способ с самописным фреймворком плохой?
    Самописный фреймворк - это не плохо. Как получение опыта - очень даже хорошо. Для себя можешь писать. Но что бы в команду устроиться работать, тебе твой фрейм самописный не поможет. Команде нужна унификация, для этого и существуют фреймворки.

    Думаю если немного его усложнить, то и с более сложными проектами справится.
    бесспорно. реально справится. только он будет заточен только под тебя. и будет ограничен функционал - тебе не хватит жизни, что бы написать то, что делают команды фанатиков.
    Ответ написан
    Комментировать
  • Как работает интерпретатор javascript на пальцах?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    Как говорят на w3cschools,
    The Browser Object Model (BOM) allows JavaScript to "talk to" the browser.

    Это такой мягкий намек на то, что вообще-то говоря Javascript может жить и вне браузера - на ум сразу приходит nodejs: там у вас изначально есть только консоль - ни о какой работе с HTML или браузером речи не идет. Можно сказать, что браузер предоставляет нам эдакое "дополнение" к тому, что знает интерпретатор о языке на момент исполнения кода. Реализаций интерпретаторов, разумеется, больше одной - если интересно какие сейчас в моде - можно посмотреть на википедии. Собственно в самом интерпретаторе и заложено то, что вы назвали "местом, где язык описан". А "описан" он там в соответствии со стандартом языка.

    Сам по себе Javascript (диалект ECMAScript) - достаточно сложный язык, его врят ли получится исполнять "читая строки по порядку" (вспомним хотя бы "поднятие" переменных), поэтому интерпретируется он несколько сложнее, чем кажется. Очень не лишним будет посмотреть вот такой парсер. И вдвойне не лишним будет познакомиться с LISP перед тем как погружаться в дебри интерпретации (это покажется странным, по практически все идеи, которые сейчас используются в Javascript, были уже очень и очень давно и там, где вы их меньше всего ожидали увидеть. Да и мозг заметно вправляет такое знакомство). На хабре люди не раз уже писали свои интерпретаторы для разных языков, так что начало для понимания внутренней кухни там можно получить.

    Возвращаясь к теме - если после ознакомления с вышеупомянутым парсером (который строит синтаксическое дерево) вы посмотрите на ваши BOM/DOM свежим взглядом, то заметите, что в то самое "дерево всего, что есть" браузер добавляет "дерево DOM" и "дерево BOM" с которыми вы, разумеется, можете работать - в коде они будут соответствовать объектам document и window. (звучит, конечно, немного грубо - но вы сами просили на пальцах). Для того, чтобы в этом убедиться, можно воспользоваться инструкцией по построению синтаксического дерева для Javascript
    Ответ написан
    1 комментарий
  • Как отсортировать массив и по ключам и по значению?

    0xD34F
    @0xD34F
    $k = array_keys($arr);
    $v = array_values($arr);
    sort($k);
    sort($v);
    $arr = array_combine($k, $v);
    Ответ написан
    3 комментария
  • Почему указанная локаль для LC_CTYPE не работает?

    xEpozZ
    @xEpozZ
    Веб-разработчик
    Все же очень просто. Если вы умеете открывать и читать документацию, это уже хорошо.
    Если открыть документацию strtoupper, то в первом комментарии добрый человек подсказал, что это не работает и нужно использовать mb_strtoupper(). Почему не работает? Видимо на это настройки не распространяются и многобайтовая кодировка не стыкуется с однобайтовой.
    Ответ написан
    Комментировать
  • Учить PHP 5 или 7?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Никакой "колоссальной разницы" в самом языке нет.
    РНР 5 и РНР 7 - это не два разных языка. Это один и тот же язык, семерка просто быстрее и из нее выпилено много вещей, которые оставались еще с 4 версии, а в 5 считались устаревшими и не поощрялись к использованию.
    Поэтому сам по себе вопрос - что учить, 5 или 7 - не имеет смысла. Язык один и тот же.

    Но есть значительная разница в подходах и экосистеме.
    Любой учебник, рассчитанный на 5, гарантированно ничего не расскажет о композере, стандартах PSR, современных шаблонизаторах, фреймворках, способах отладки и многих других важных вещах, без которых немыслим современный РНР. И в этом смысле надо разумеется искать более свежие материалы, а не те, которые были написаны 5-10-20 лет назад.
    Ответ написан
    Комментировать
  • Учить PHP 5 или 7?

    nazares
    @nazares
    Software Engineer
    Однозначно 7 даже потому, что пока вы будете учить и на момент когда вы выучите уже и 7 устареет 7.0 на сегодняшний день уже (deprecated)
    Ветка 7.0 закончила свой жизненный цикл 10 Jan 2019 вместе с 5.6
    Ответ написан
    Комментировать
  • Как с помощью JS вызвать событие change и убрать галочку на чекбоксе?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Вариант раз - вызвать у элемента метод click: checkbox.click();.

    Вариант два - установить новое значение checked и отправить элементу событие change:

    checkbox.checked = /* сюда пишем true или false */;
    checkbox.dispatchEvent(new Event('change'));
    Ответ написан
    Комментировать
  • Учить PHP 5 или 7?

    @alexalexes
    Пока не появится реальная задача - вообще бесполезное метание.
    Читать про то и про другое, потом что-то пытаться накодить.
    Однако, по-настоящему вы освоите ту или иную версию, когда будете работать над реальным серверным приложением/сайтом.
    Ответ написан
    Комментировать
  • "localstorage" или cookie?

    @triton
    К уже написанному выше дополню:

    Куку можно ставить на домен второго уровня и она будет доступна в поддоменах, а localStorage привязывается только к полному домену.

    Еще учтите, что в safari есть специальный режим при котором любая попытка записать что-либо в localStorage будет приводить к скриптовой ошибке. Этим режимом не часто но пользуются, так что лучше добавить обработку этой ошибки.

    А так, пользуйтесь тем, что лучше подходит.
    Ответ написан
    Комментировать