Задать вопрос
  • Как сделать аутентификацию на несколько типов пользователей в laravel5.2?

    @DP-Studio
    20 лет веб-разработки
    Используйте или как вам выше написали Entrust или Sentinel

    Офф док: https://cartalyst.com/manual/sentinel/2.0
    Статья как быстро внедрить в проект: angrydeer.ru/laravel/laravel-5-2-sajt-s-nulya-i-do...
    Ответ написан
    Комментировать
  • Как сделать аутентификацию на несколько типов пользователей в laravel5.2?

    @Silm
    https://laravel.com/docs/5.2/authorization

    аутентификация - это "вход", проверка логина и пароля
    авторизация - представление определенных прав
    Ответ написан
    Комментировать
  • Как сделать аутентификацию на несколько типов пользователей в laravel5.2?

    wielski
    @wielski
    ✔ Совет: Вам помогли? Отметьте ответы решением.
    Лучше используйте проверенный Entrust.
    В нем все из коробки (роли, права ролей, и т.д.).
    Работает плотно со встроенным Auth.

    Конечно, можно все реализовать стандартными возможностями Laravel, но выйдет это в лишних 500 строк кода. И не факт, что вы напишите этот код правильно :)
    Ответ написан
    Комментировать
  • Какой версии взять фреймворк laravel?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    5.2 точно так же стабилен, как и 5.1. Если аббревиатура LTS для вас не пустой звук и вы понимаете, что вам это нужно, то берите 5.1, иначе берите 5.2.
    Ответ написан
    Комментировать
  • Как правильно реализовать локализацию БД в laravel?

    wielski
    @wielski
    ✔ Совет: Вам помогли? Отметьте ответы решением.
    На мой взгляд использование пакетов для этой цели нецелесообразно.
    Обычная полиморфическая связь подойдет.

    И так, давайте представим что основной контент статьи на русском языке.
    Во первых, создадим модель нашей локализации:
    php artisan make:model Localization

    Укажем что это полиморфическая связь:
    protected $table = 'localization';
    
    public function lozalizable()
      {
          return $this->morphTo();
      }


    В нашей модели статей привяжем свежесозданную модель в качестве связи:
    public function lozalization(){
    	    return $this->morphOne('App\Localization', 'lozalizable');
    	}


    И создадим миграцию для модели Lozalizable:
    Schema::create('localization', function (Blueprint $table) {
            $table->increments('id');
            $table->string('field');
            $table->string('language');
            $table->string('value');
            $table->string('lozalizable_type');
            $table->integer('lozalizable_id');
            $table->timestamps();
          });


    Теперь, для создания локализации статьи с языком en выполним следующий код:
    $article = Article::create($Atricle);
    
    $localization = new Localization;
    $localization->language = 'en';
    $localization->field = 'content';
    $localization->value = 'Znachenye na english yazike';
    $article->localization()->save($localization); //привязываем к свежесозданному объекту Article новую локализацию


    С помощью scope функций в модели можно без особых проблем реализовать более удобное выдергивание нужного значения и языка:
    public function scopeGetLocalize($language, $field){
         return $this->localization()->where(['language' => $language, 'field' => $field])-> firstOrFail()->value;
    }


    В таком случае, скажем, поле title для локализации en можно выдергивать так:
    $article->getLocalize('en', 'title')
    Ответ написан
    19 комментариев
  • Как administrator frozennode для name_field в relationship выбрать значение из нескольких полей таблицы?

    Denormalization
    @Denormalization
    Неоднократно уже писал: не используйте вы эту поделку ни для чего, что сложнее ToDo списка.
    Вы же даже не можете открыть документацию, и прочитать 5 строчек текста.

    administrator.frozennode.com/docs/field-type-relat...

    Используйте в качестве name_field перегруженый accessor для поля адрес_с_квартирой.

    Т.е в модели добавить:
    public function getAddressApartmentAttribute() {
      return $this->attributes['квартира'] . " - " . $this->attributes['address'];
    }


    И соответственно:
    'apartments' => [
        'type' => 'relationship',
        'name_field' => 'address_apartment',
    ],
    Ответ написан
    Комментировать
  • Есть ли у Laravel5 красивый дебаг?

    и все
    я сам реву, все ревут.. я думал в релизе 5.2 что то появится - нет, ждем 5.3
    Ответ написан
    2 комментария
  • Есть ли у Laravel5 красивый дебаг?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Laravel
    Комментировать
  • Как защитить антибликовое покрытие Macbook Pro Retina?

    @FoxInSox
    Молюсь за сохранность покрытия при каждом открытии крышки ноутбука. Пока помогает.
    Ответ написан
    6 комментариев
  • Почему при пополнении через merchant не сохраняется пополнение в бд хотя оплата проходит успешно?

    Denormalization
    @Denormalization
    name="login"

    $_POST['nickname']


    Они разве не должны одинаково называться?

    PS
    Ключи потри.
    Ответ написан
    3 комментария
  • Как настроить отправку почты на хостинге?

    atlantech
    @atlantech
    Full Stack Software Developer
    ОК означает то, что сообщение было успешно подготовлено к отправке. Гарантий того, что оно дойдёт до адресата нету. Попробуйте воспользоваться советом Q4Dizzy и проверьте ваш спам обязательно, бывает и такое))
    Ответ написан
    Комментировать
  • Как исправить ошибку оплаты в merchant?

    Akdmeh
    @Akdmeh
    PHP, Yii2, Music
    Вероятно, страница должна вернуть просто OK (или что-то похожее), а у вас возвращается целая страница. В этом вероятно может быть ошибка.
    А еще проверьте порядок параметров в подписи запроса, они вроде бы должны идти в алфавитном порядке.
    Ответ написан
    1 комментарий
  • Как настроить отправку почты на хостинге?

    romy4
    @romy4
    Exception handler
    Как уже выяснили тут недавно, что result == ok будет выводится почти всегда. а хостер просто может не иметь своего smtp или он для вас закрыт. это не пхп отправляет почту. пишите хостеру.
    Ответ написан
    1 комментарий
  • Как настроить отправку почты на хостинге?

    @Q4Dizzy
    Проще всего написать в службу поддержки.. Им проще выявить причину проблемы.. Настройки, почтовики и всё остальное не всегда совпадают на всех хостингах.
    Ответ написан
    Комментировать
  • Как поменять язык в laravel?

    zvermafia
    @zvermafia
    WebDev
    App::setLocale( $lang ) это для 1 го (запроса) раза.
    Мой вариант, в место App::setLocale() надо использовать Cookie или Session. И каждый раз проверять в Middleware значение lang в Cookie или Session и там использовать App::setLocale( $lang ).
    Ответ написан
    Комментировать
  • Почему ошибка на локальном сервере?

    maddog670
    @maddog670
    У вас нету переменной
    $pm
    Ответ написан
    Комментировать
  • Учусь на конструировании радиотехнических устройств, какую тему выбрать для диплома?

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

    Например... Устройство, которое можно подключить к холодильной (или к мотоциклу, или к гитаре, или к автомобилю, или к компьютеру - смотря чем увлекаетесь) установке и которое бы фиксировало факты включений-выключений установки, переключение режимов, сбои или еще какие то события, подлежащие фиксации и не фиксируемые самим устройством. + Например отправка по wifi вам отчетов. Всё.

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

    При повторной потере мотивации алгоритм следующий:
    1) Идем высыпаемся. По-нормальному так, без будильников. Чтоб глаза вообще больше не закрывались.
    2) Если мотивация не вернулась (возвращается в 70% случаев) - берем велик (хотя можно и пешком) - и на улицу. Если есть приличный парк в городе - находим пару нестандартных физ. упражнений (можно боевых), пытаемся выполнить. Работа с телом и физические нагрузки - это совершенно другая часть вашего сознания, про нее нужно не забывать.
    3) Если мотивация не вернулась (уже где-то 85% случаев) - берем случайную книгу (не техническую), в идеале - из жанра который вам нравится. Читаем. Спокойно, страницы не считаем.
    4) Если не вернулась, повторить с п. 1 до пяти раз, не думая о времени и выполняя только самые важные дела (срочные задачи по учебе, работа, если есть), можно даже попросить родных/знакомых помочь по дому и бытовым делам, чтобы себя разгрузить.
    5) Если не помогло после 5 раз, задаем новый вопрос на тостере, подробно описываем что делали).

    Хотя бы один из п. 1-3 выполняем для профилактики каждый выходной.
    P.S. в принципе плохо сравнивать себя с кем-то - для "сравнения" на свете есть всякие соревнования и состязания, где есть правила и контекст. В жизни правил нет, один учится в MIT, другой учится в колледже в России - какие могут быть сравнения? Вы думаете тут большинство людей за один год все узнало и всего добилось? Вы глубоко заблуждаетесь) PHP-шники-выскочки не в счет, у них искаженное представление о реальности.
    Ответ написан
    11 комментариев
  • Как сделать так, чтобы функция выполнялась только после того, как другая завершится?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Дисклеймер
    Кому не нравится название "обещания", мысленно заменяйте его на то, которое считаете подходящим. Я выбрал именно его, чтобы концепция, лежащая в их основе, была интуитивно понятна.

    Если функция асинхронная, то лучше всего использовать обещания, что вы и попытались сделать (интерактивный пример).
    one().done(two);
    
    function one() {
        var dfd = new $.Deferred();
    
        // Запускаем асинхронную задачу. Например, ajax-запрос.
        setTimeout(function () {
            var foo = 'bar';
    
            // "Выполняем обещание", передавая в него какую-то информацию.
            // Передавать аргументы, разумеется, не обязательно.
            dfd.resolve(foo);
        }, 2000);
    
        // Возвращаем из функции обещание, на которое могут подписаться другие функции.
        // Обратите внимание, этот код выполнится до того, как завершится асинхронная задача.
        return dfd.promise();
    }
    
    function two(foo) {
        // Обрабатываем данные, полученные внутри асинхронной функции one.
        console.log('two', foo);
    }

    Для трех функций расклад немного сложнее, но принцип такой же.
    Есть и более элегантный способ запуска цепочки из трех функций:
    код
    one().then(two, onOneError).then(three, onTwoError);
    
    function one() {
        var dfd = new $.Deferred();
    
        setTimeout(function () {
            console.log('one');
            
            if (Math.round(Math.random() * 10) >= 5)
            {
                dfd.resolve();
            }
            else
            {
                dfd.reject();
            }
        }, 1000);
    
        return dfd.promise();
    }
    
    function two() {
        var dfd = new $.Deferred();
    
        setTimeout(function () {
            console.log('two');
            
            if (Math.round(Math.random() * 10) >= 5)
            {
                dfd.resolve();
            }
            else
            {
                dfd.reject();
            }
        }, 1000);
    
        return dfd.promise();
    }
    
    function three() {
        setTimeout(function () {
            console.log('three');
        }, 1000);
    }
    
    function onTwoError() {
        console.log('twoError', arguments);
    }
    
    function onOneError() {
        console.log('oneError', arguments);
    }

    Обратите внимание, что в этом примере показано, что обещания можно не только выполнять, но и отказываться от них и такие ситуации нужно обрабатывать отдельно.


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

    Другой вариант - передавать callback, но это прямой путь в callback hell. Для запуска трех и более функций подряд я его не рекомендую - смотрите сами, на что становится похож код:
    one(function () {
        two(three)
    });
    
    function one(callback) {
        console.log('one');
        setTimeout(callback, 1000);
    }
    
    function two(callback) {
        console.log('two');
        setTimeout(callback, 1000);
    }
    
    function three() {
        console.log('three');
    }


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

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