• Как разрешить Cors на laravel?

    @survivor2005 Автор вопроса
    Всем сорри я просто походу тупанул нужно было зарегистрировать мидлдвер в разделе АПИ, а не в разделе мидлевер. И все зарботало. Прилагаю скрин файла kernel.php. Обратите внимание в каком разделе зарегистрирован Cors.php
    <?php
    
    namespace App\Http;
    
    use Illuminate\Foundation\Http\Kernel as HttpKernel;
    
    class Kernel extends HttpKernel
    {
        /**
         * The application's global HTTP middleware stack.
         *
         * These middleware are run during every request to your application.
         *
         * @var array
         */
        protected $middleware = [
            // \App\Http\Middleware\TrustHosts::class,
            \App\Http\Middleware\TrustProxies::class,
            \Fruitcake\Cors\HandleCors::class,
            \App\Http\Middleware\PreventRequestsDuringMaintenance::class,
            \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
            \App\Http\Middleware\TrimStrings::class,
            \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
        ];
    
        /**
         * The application's route middleware groups.
         *
         * @var array
         */
        protected $middlewareGroups = [
            'web' => [
                \App\Http\Middleware\EncryptCookies::class,
                \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
                \Illuminate\Session\Middleware\StartSession::class,
                // \Illuminate\Session\Middleware\AuthenticateSession::class,
                \Illuminate\View\Middleware\ShareErrorsFromSession::class,
                \App\Http\Middleware\VerifyCsrfToken::class,
                \Illuminate\Routing\Middleware\SubstituteBindings::class,
            ],
    
            'api' => [
                'throttle:api',
                \Illuminate\Routing\Middleware\SubstituteBindings::class,
                \App\Http\Middleware\Cors::class,
    
            ],
        ];
    
        /**
         * The application's route middleware.
         *
         * These middleware may be assigned to groups or used individually.
         *
         * @var array
         */
        protected $routeMiddleware = [
            'auth' => \App\Http\Middleware\Authenticate::class,
            'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
            'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
            'can' => \Illuminate\Auth\Middleware\Authorize::class,
            'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
            'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
            'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
            'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
            'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
        ];
    }
    Ответ написан
    1 комментарий
  • HTML5 postMessage из ifram-a parent-y?

    Rebulus
    @Rebulus
    К сожалению, данный вариант не пропустит Вас в связи с политикой безопасности. Но Вы можете попробовать следующее решение:
    1. Из сайта A послать сообщение postMessage в iframe B, в котором грузится сторонний js script C.
    2. Script C должен при инициализации подписаться на событие window.addEventListener(«message», ...)
    3. В это событие из postMessage передастся объект event. Где event.source — это ссылка на DOM объект окна, вызвавшего событие.
    4. Вызвать в обработчике отправку сообщения на сайт A с помощью event.source.postMessage(...)


    Пример скриптов:
    • На сайте А по загрузке документа выполнить:

    	var iFrame = ...// создание переменной, ссылающийся на DOM элемент iframe B
    	iFrame.contentWindow.postMessage('test message', '*');
    	window.addEventListener(
    		"message",
    		function (event) {
    			// Обработка сообщения от iframe B
    		},
    		false);
    

    • В Script C:

    	window.addEventListener(
    		"message",
    		function (event) {
    			event.source.postMessage('test message', '*');
    		},
    		false);
    

    Ссылка на описание postMessage.
    Ответ написан
    Комментировать
  • Как сделать правильную умную кнопку Назад в VueJS?

    alvvi
    @alvvi
    export default apathy;
    Так хорошо, вроде бы все классно. Теперь проблема с прямым переходом по ссылке в запись решена, только вот появляется другая проблема. Позиционирование скролла. При переходе go(-1) у нас сохраняются все записи которые были загружены в список, а при переходе to="/posts" компонент заново загружает записи и позиционируется вверху. Ну ладно, позиционирование, компонент просто еще раз начинает загружать данные.

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

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

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

    @SimasikS
    Я есть
    Обычно делают, метку временную, когда начали листать ленту, и делают выборку из бд с применением этой метки. То есть мы сделали первый зпрос в 16:00 значит, нам нужно показать первые 10 записей из ленты, потом кто-то что-то добавляет, в 16:01, и мы в 16:02 нажимаем на кнопку показать ещё 10. После этого выборка будет идти, так чтобы мы выбрали вторую пачку данных которые были до 16:00. И так образом та запись которая была в 16:01 не попадет и ничего неполомает. А на мы интерфейсе можем показать(как в Вк например), что есть появилась новая запись.
    Ответ написан
    2 комментария
  • Каким образом можно в компоненте-контейнере управлять URI react-redux-router v4?

    SuperPosan
    @SuperPosan
    Бандит
    import { createStore, combineReducers, applyMiddleware } from 'redux';
    import { routerMiddleware, push } from 'react-router-redux'
    
    const middleware = routerMiddleware(browserHistory)
    const store = createStore(
      reducers,
      applyMiddleware(middleware)
    )
    
    store.dispatch(push('/foo'))


    И диспатчить откуда душе угодно
    Ответ написан
    4 комментария
  • Как правильно обойти объект JS для построения дерева?

    mashletov
    @mashletov
    Math.random()
    const categories = [
        { id: 1, name: 'name 1', parent: null },
        { id: 2, name: 'name 2', parent: 1 },
        { id: 3, name: 'name 3', parent: 6 },
        { id: 4, name: 'name 4', parent: 5 },
        { id: 5, name: 'name 5', parent: 6 },
        { id: 6, name: 'name 6', parent: null },
        { id: 7, name: 'name 7', parent: null }
    ];
    
    function buildTree(items, parent) {
        parent = parent || null;
        let result = [];
    
        items.forEach((item) => {
            if (item.parent === parent) {
                result.push(item);
                item.children = buildTree(items, item.id);
    
                if (!item.children.length) {
                    delete item.children;
                }
            }
        });
        
        return result;
    }
    // todo: не обходить уже добавленные
    console.log(buildTree(categories));
    Ответ написан
    Комментировать
  • Как правильно обойти объект JS для построения дерева?

    Negwereth
    @Negwereth
    lvivcss.com.ua
    Составление дерева любого уровня вложенности.

    const categories = [
      { id: 1, name: 'name 1', parent: null },
      { id: 2, name: 'name 2', parent: 1 },
      { id: 3, name: 'name 3', parent: 6 },
      { id: 4, name: 'name 4', parent: 5 },
      { id: 5, name: 'name 5', parent: 6 },
      { id: 6, name: 'name 6', parent: null },
      { id: 7, name: 'name 7', parent: null }
    ]
    
    function buildTree (array) {
      // Складываем все элементы будущего дерева в мап под id-ключами
      // Так легче делать поиск родительской ноды
      const map = new Map(categories.map(item => [item.id, item]));
      
      // Обход в цикле по значениям, хранящимся в мапе
      for (let item of map.values()) {
        
        // Проверка, является ли нода дочерней (при parent === null вернет undefined)
        if (!map.has(item.parent)) {
          continue;
        }
        
        // Сохраняем прямую ссылку на родительскую ноду, чтобы дважды не доставать из мапа
        const parent = map.get(item.parent);
    
        // Добавляем поточную ноду в список дочерних нод родительчкого узла.
        // Здесь сокращено записана проверка на то, есть ли у ноды свойство children.
        parent.children = [...parent.children || [], item];
      }
    
      // Возвращаем верхний уровень дерева. Все дочерние узлы уже есть в нужных родительских нодах
      return [...map.values()].filter(item => !item.parent);
    }
    
    const tree = buildTree(categories);
    
    console.log(tree);
    Ответ написан
    Комментировать
  • Как поставить высоту блока div в зависимость от ширины?

    Зачем скрипты? Можно ведь обычным css'ом обойтись:
    jsfiddle.net/qso14y3k

    Один минус - 2 дополнительные обёртки для каждого блока. Но это не смертельно. Фокус этот работает по стандартам, так что работать должен везде.
    Также эта техника входит в toolkit, который написан ребятами, которые написали Singularity.
    Ответ написан
    2 комментария
  • Как сделать выравнивание тултипа по вертикали по центру?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Любой из способов по запросу "CSS вертикальное выравнивание"
    например,
    top: 50%;
    transform: translateY(-50%);

    Выложили бы свои стили, помощи могло бы быть больше.
    Ответ написан
    4 комментария
  • Как при добавлении строки изменить атрибуты в DOM?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Напишите директиву. Это единственный правильный путь.

    Псевдокод:
    function editOnceDirective(){
        return {
             require: 'ngModel',
             link: function (scope, el, attr, ctrl) {
                  // включаем редактирование если у нас пустое значение
                  // еще стоит проверять убрали ли мы фокус с поля и все такое
                  scope.$watch(function () { return ctrl.$invalid; }, function (isInvalid) {
                       if (!isBoolean(isInvalid)) return;
    
                       el.attr('contenteditable', isInvalid);
                  }
    
                  // вешаем листенеры на элемент что бы обновлять значение
             }
        }
    }


    Читать про ngModelController, кастомные инпуты и т.д.
    Ответ написан
    9 комментариев
  • Какие будут советы начинающему YII программисту?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Может кто-то даст хорошие советы для изучения.

    Еб*ашь код.
    Ответ написан
    1 комментарий
  • Как в Kohana 3 ORM поменять ключь связи?

    @entermix
    Вы как то неправильно проектируете БД, опишите, что в именно результате Вы хотите получить

    У Вас 1 блюдо могут заказать несколько раз, то же самое в 1 заказе может быть несколько блюд, т.е. Вам нужно использовать связь belongs to (много ко многим)

    P.S. названия моделей в Kohana принято называть в единственном числе (кроме исключений)
    Ответ написан
    4 комментария
  • Что делать если сервер отдает нестандартный массив данных для Backbone?

    Для этого нужно в коллекции переопределить метод parse.
    Ответ написан
    Комментировать
  • В чем разница между node и nodejs?

    sim3x
    @sim3x
    Снести оба
    Поставить офф пакет

    Читаем https://deb.nodesource.com/setup чтоб узнать каким образом к нам на пк добавятся доп репозитории. Вся ответственность за проблемы только на тебе

    По дефолту ставится 0.10.x

    curl -sL https://deb.nodesource.com/setup | sudo bash -
    вставить для установки репозиториев

    sudo apt-get update && sudo apt-get install -y nodejs
    установить ноду

    если нужно свежее, то меняем
    sudo vim /etc/apt/sources.list.d/nodesource.list

    deb https://deb.nodesource.com/node_0.10 ....
    deb-src https://deb.nodesource.com/node_0.10 ...

    на
    deb https://deb.nodesource.com/node_0.12 ....
    deb-src https://deb.nodesource.com/node_0.12 ...


    sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get install -y nodejs


    //узнать про твои пакеты ты можешь так which node; man node
    Ответ написан
    Комментировать
  • Как подключиться к 1С файловой базе данных из PHP?

    ferrasoft
    @ferrasoft
    Главный инженер компании ФерраСофт
    А запуск конфигурации через платформу 1с 8.2 проходит? Коннектор 8.3 зарегистрирован? Судя по описанию должен быть 8.2 "...Трактиръ: Front-Office v.3 работает на любой компоненте системы программ «1С: Предприятие 8.2»..."

    Ошибка "-2147352567" говорит о том, что класс не зарегистрирован.

    Зарегистрировать коннектор (8.3):
    regsvr32 "C:\Program Files\1cv8\8.3.5.***\bin\comcntr.dll"

    Или лучше переустановить коннектор или платформу.
    Ответ написан
    1 комментарий