These are chat archives for LaravelRUS/chat

30th
Jul 2017
Nikita
@exotickg1
Jul 30 2017 00:39
Ребят, не могу установить Orchid CMS поверх Laravel 5.4(чёто там)
  Could not find package orchid/platform at any version matching your PHP ver
  sion 5.6.30.0

PHP 7.1.5 (cli) (built: Jun  3 2017 23:56:37) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
Хотя с версией всё ок, судя по SSH
Подскажите пожалуйста, где ошибку искать?
Kirill Nesmeyanov
@SerafimArts
Jul 30 2017 01:00
@exotickg1 у тебя в композере точно платформа не 5.6 прописана?
Nikita
@exotickg1
Jul 30 2017 01:03
@SerafimArts знал бы я еще как проверить :)
Kirill Nesmeyanov
@SerafimArts
Jul 30 2017 01:05
@exotickg1 открыть composer.json, не?
KarmaBot
@KarmaBot
Jul 30 2017 01:11
@exotickg1, чтобы показать длинный листинг кода желательно использовать pastebin-сервис, например gist.github.com или laravel.io/bin.
Evgeny Stefanenko
@KomAuras
Jul 30 2017 02:03
есть в природе хорошее решение для кнопки "Назад" на форме? C учетом того что уже (к примеру) жали кнопку "Сохранить". + хотелось бы вернуться на конкретную страницу таблицы а не на первую.
Nikita
@exotickg1
Jul 30 2017 02:03
Andrey
@daaner
Jul 30 2017 02:08
@HectorPrima history.back() не?
window.location.history.go(-1)
Evgeny Stefanenko
@KomAuras
Jul 30 2017 02:09
@Daaner сильно простое решение и древнее как мамонт :) не учитывает то что ты 10 раз на кнопку сохранить нажал. а так да. самое простое.
@Daaner я думал может что новое придумано
Andrey
@daaner
Jul 30 2017 02:09
а че 10 раз?
Evgeny Stefanenko
@KomAuras
Jul 30 2017 02:09
@Daaner это к примеру. ну 2 раза. а потом решил вернуться. придется несколько раз кнопку Назад тыкать
Andrey
@daaner
Jul 30 2017 02:10
ну есть масса методов чтоб не тыкали по 100500 раз
Evgeny Stefanenko
@KomAuras
Jul 30 2017 02:10
@Daaner ладно я понял. буду думать
Andrey
@daaner
Jul 30 2017 02:11
поставь какой-то ретурн фалсе на секунду/две и будет счастье
после валидного тыка
а вооще-то, если захардкорить - сделай кнопку на форму и туда передай старые данные прям в формы.
тока в плейсхолдер))))) так интереснее
пусть заново вписывают и ругают тебя нехорошими словами
Evgeny Stefanenko
@KomAuras
Jul 30 2017 02:15
@Daaner я думал что то типа ... сохранять в скрытое поле предыдущий url если он не равен текущему урлу формы. и возвращаться на него.
YAAP
@yaapis
Jul 30 2017 08:08
А если форма постовая? Лучше в кой-то редис форму при сабмите ложить с ттл 30 мин и при нажатии бэк кнопки пробовать из редиса тянуть данные и репопулировать
Причем так репопуляцию можно делать не только по бэк, но и просто при след. заходе на форму, если такое поведение ок
Ваня Devium
@webdevium
Jul 30 2017 08:27
old для кого придумали?
Sergey
@shummm
Jul 30 2017 08:31
@webdevium Привет. Помнишь я спрашивал по поводу вывода по 4 таблицам? Я тогда сразу не разобрался. hasManyThrough Это вывод из трех а как четвертую к этим трем прикрепить?)
Ваня Devium
@webdevium
Jul 30 2017 08:32
@shummm джойн
JhaoDa
@jhaoda
Jul 30 2017 08:33
@webdevium джойн может делать только войн-андройд. Все остальные могут делать только джоин.
Sergey
@shummm
Jul 30 2017 08:33
@webdevium спасибо)
KarmaBot
@KarmaBot
Jul 30 2017 08:33
Спасибо (+1) для @webdevium принято! Текущая карма +235.
Ваня Devium
@webdevium
Jul 30 2017 08:34
@jhaoda ты чего меня андроидом обзываешь, хад))))
Ваня Devium
@webdevium
Jul 30 2017 09:38
@jhaoda Темыч, ну не знаешь как - хоть скажи. Я же жду.
Юрий
@sawerus
Jul 30 2017 09:51
@webdevium ну ты прост сам себе написал )))
Ваня Devium
@webdevium
Jul 30 2017 09:52
@sawerus во я лох
@jhaoda Темыч, помоги додумать. Каким механизмом можно проверять, что в редисе все 400К емейлов пользователей сейчас есть? Например, при рестарте.
John
@jdk2se
Jul 30 2017 10:07
Привет!
Парни подскажите, получаю данные $cat = Category::where(...). Если что то нахожу, то всё норм. Если $cat == null то редиректит на главную. Как убрать редикет?
KarmaBot
@KarmaBot
Jul 30 2017 10:07
Привет, @jdk2se! Проходи, присаживайся. В ногах правды нет :)
SanyaSPY
@SanyaSPY
Jul 30 2017 10:13
@jdk2se редирект сам по себе не происходит ищи в коде его
John
@jdk2se
Jul 30 2017 10:14
@SanyaSPY Ага, почти час просидел, написал сюда, нашёл)
Evgeny Stefanenko
@KomAuras
Jul 30 2017 11:03
Эта стандартная проблема что artisan когда падает не показывает на какой строке и в каком файле ошибка? Или что то можно подкрутить? А то пишет:
[ErrorException]
Undefined index:
и все
в лог запаривает лазить
projct1
@projct1
Jul 30 2017 11:04
есть в ларке хелпер как определить ссылку из строки?
есть ли ссылка
PhpNet
@PhpNet
Jul 30 2017 11:07
@rorc в ларе вроде нет, имеется в виду просто рандомная строка и проверить, есть ли там урл или проверить, что строка - строго урл?
projct1
@projct1
Jul 30 2017 11:07
есть ли урл в строке
PhpNet
@PhpNet
Jul 30 2017 11:08
регуляркой?
projct1
@projct1
Jul 30 2017 11:08
конечно)
projct1
@projct1
Jul 30 2017 11:23
хз слишком замудрено как-то)
PhpNet
@PhpNet
Jul 30 2017 11:26
там регулярка не все покрывает, какой нибудь .travel не покроет
Ostap
@BendersOstap_twitter
Jul 30 2017 13:11
Создаю к примеру блог на Laravel создаю контроллеры модели.
Контроллеры рендерят вьюхи html, теперь я хочу создать api.
Но тут возникает проблема мне получается нужно дублировать контроллеры и складывать их в папку Controllers/Api?
так как мне сделать так, что бы я с помощью API мог запросить список постов юзера и получить результат в json
и из браузера и получить ответ в html бутстрапе?
Ребят помогите разобраться
slider23
@slider23
Jul 30 2017 13:16
@BendersOstap_twitter выноси весь функционал из контроллеров в другие классы. Например, их можно назвать Сервисами и держать в папке Services. Или как угодно по-другому. В итоге у тебя в контроллере будет только вызов одного или нескольких методов этих классов и возврат результатов. В обычных - в виде вьюхи, в апишных - в виде json (если просто вернуть массив из контроллера, laravel его автоматом преобразует в json)
Ostap
@BendersOstap_twitter
Jul 30 2017 13:18
@slider23 Спасибо интересное решение, а где примеры посмотреть можно?
KarmaBot
@KarmaBot
Jul 30 2017 13:18
Спасибо (+1) для @slider23 принято! Текущая карма +215.
Igor Markin
@markinigor
Jul 30 2017 13:20
@BendersOstap_twitter либо, если проект не большой, и не хочется делать отдельное api, но хочется получать json, то можно в одном контроллере в зависимости от запроса возвращать либо вьюшку либо json
Ostap
@BendersOstap_twitter
Jul 30 2017 13:25
как раз таки, проект крупноватый выходит, как тут быть?
Igor Markin
@markinigor
Jul 30 2017 13:26
@BendersOstap_twitter но это постоянные проверки в контроллере if (request()->expectsJson()) а так, вариант с сервисами все же более предпочтителен https://laravel-news.ru/blog/tutorials/design-pattern-service-layer-with-laravel-5
Ostap
@BendersOstap_twitter
Jul 30 2017 13:27
@markinigor спасибо
KarmaBot
@KarmaBot
Jul 30 2017 13:27
Спасибо (+1) для @igorvdonsk принято! Текущая карма +40.
slider23
@slider23
Jul 30 2017 13:29
@BendersOstap_twitter пример кода я сейчас затрудняюсь показать, но эта тема тесно переплетается с Domain Driven Design, по нему можно посмотреть вот это: https://www.youtube.com/watch?v=7HXIrEsmlzM
Victor Atsuta
@victoratsuta
Jul 30 2017 15:57
Доброго всем времени суток! Хотел поинтересоваться есть ли способ передать в функцию часть масива, и чтоб при изменении этой части внутри функции это же изменение происходило и в основном масиве. Тоесть
    function change($arr){
        $arr['name']='somename';
    }
    change($person['info']);
вот так
Anton Kartsev
@bigperson
Jul 30 2017 16:11
@victoratsuta &$arr
projct1
@projct1
Jul 30 2017 16:20
подскажите плз как подключать дебагбар только для определённого админа
пробую в AppServiceProvider прописать так, но ошибка Class hash does not exist
    public function register()
    {
        if (\Auth::id() == 1) {
            $this->app->register(ServiceProvider::class);
            $this->app->register(IdeHelperServiceProvider::class);
            $this->app->alias('Debugbar', Facade::class);
        }
    }
JhaoDa
@jhaoda
Jul 30 2017 16:24
@rorc чувак, наступит ли тот благословенный день, когда ты таки решишь начать читать документацию?
projct1
@projct1
Jul 30 2017 16:29
@jhaoda 😟
JhaoDa
@jhaoda
Jul 30 2017 16:29
@rorc нет, не наступит?
projct1
@projct1
Jul 30 2017 16:30
@jhaoda я там нашёл только как отдельный провайдер делать отложенным
а если я в главном провайдере регаю отложенный код как бы
JhaoDa
@jhaoda
Jul 30 2017 16:31
@rorc а ты ещё раз прочитай про сервис-провайдеры, только внимательно
JhaoDa
@jhaoda
Jul 30 2017 16:38
@rorc чувак, я переживаю, ты читаешь или нет?
projct1
@projct1
Jul 30 2017 16:39
@jhaoda этот же раздел? https://laravel.com/docs/5.4/providers
JhaoDa
@jhaoda
Jul 30 2017 16:39
@rorc точно
projct1
@projct1
Jul 30 2017 16:44
@jhaoda на сколько я понял, в момент обращения к Auth::id() провайдер для авторизации ещё не загрузился, поэтому ошибка
мне надо выполнить инициализацию после его загрузки
JhaoDa
@jhaoda
Jul 30 2017 16:44
@rorc так, и что же на этот счёт говорит дока?
projct1
@projct1
Jul 30 2017 16:45
@jhaoda там говорится надо выставить protected $defer = true;
тока это не то
JhaoDa
@jhaoda
Jul 30 2017 16:45
Ктулху Всемогущий, какой писец...
@rorc чувак, ну серьёзно, смени профессию. Ибо ты даже в доке не способен прочитать, что в методе register нельзя делать то, что ты делаешь
projct1
@projct1
Jul 30 2017 16:46
я же не в отдельном классе делаю чтобы поменять его как отложенный
@jhaoda а вот так я могу делать, всё нормально регистрируется
    public function register()
    {
        if (env('APP_ENV') == 'local') {
            $this->app->register(DebugbarServiceProvider::class);
            $this->app->register(IdeHelperServiceProvider::class);
            $this->app->alias('Debugbar', Facade::class);
        }
    }
JhaoDa
@jhaoda
Jul 30 2017 16:48
@rorc и ты не видишь разницы между этими кусками кода?
projct1
@projct1
Jul 30 2017 16:49
@jhaoda ну условие поменялось, вижу, на \Auth::id() == 1
Kirill Nesmeyanov
@SerafimArts
Jul 30 2017 16:50
@rorc внезапно, а что требует аутентификация?
правильно, инициализации
JhaoDa
@jhaoda
Jul 30 2017 16:50
@rorc ну хоть это видишь... а учитывая, что выше ты сам сказал «в момент обращения к Auth::id() провайдер для авторизации ещё не загрузился, поэтому ошибка» и то, что написано в доке, то куда надо этот код перенести?
Kirill Nesmeyanov
@SerafimArts
Jul 30 2017 16:50
а где инициализация происходит? Правильно, в методе boot
всё
JhaoDa
@jhaoda
Jul 30 2017 16:50
@SerafimArts все карты открыл...
Kirill Nesmeyanov
@SerafimArts
Jul 30 2017 16:51
а что открывать? Это ошибка столь очевидна, что...
projct1
@projct1
Jul 30 2017 16:51
@SerafimArts @jhaoda на тот момент \Auth::id() === null
JhaoDa
@jhaoda
Jul 30 2017 16:51
@rorc ... что я очень рекомендую задуматься над сменой профессии
Kirill Nesmeyanov
@SerafimArts
Jul 30 2017 16:52
@jhaoda хоть в отдельном контексте твоё замечание и выглядит как хамство, но учитывая то, что @rorc тут уже более двух лет - я склонен с ним согласиться =\
projct1
@projct1
Jul 30 2017 16:52
мб ивент какой то есть когда загрузился Аутх провайдер
Kirill Nesmeyanov
@SerafimArts
Jul 30 2017 16:54
эвенты тоже в аутх провайдерах и тоже грузятся...
л - логика
может есть какой эвент на загрузку эвентов? :D
projct1
@projct1
Jul 30 2017 16:54
@SerafimArts ну так как осуществить задуманное мной то?)
Kirill Nesmeyanov
@SerafimArts
Jul 30 2017 16:54
написать в boot
и не мучать мозг
мог бы уже методом тыка проверить
projct1
@projct1
Jul 30 2017 16:57
@SerafimArts ну так не пашет же, в буте Auth::id() равен null
JhaoDa
@jhaoda
Jul 30 2017 17:06
Хм, а может, изменения, из-за которых теперь в конструкторе нельзя получить юзера через DI, на boot тоже повлияли?
JhaoDa
@jhaoda
Jul 30 2017 17:15
Нет... без оборачивания в замыкание ни в одной версии это в boot не работает
@rorc за все годы работы с ларавел ни разу не приходилось обращаться к юзеру в boot напрямую, так что ты мне даже глаза открыл. Прочем, это не отменяет того факта, что ты не читаешь доку, не гуглишь и не думаешь. Хотя ответ можно было за 5 секунд найти
projct1
@projct1
Jul 30 2017 17:20
@jhaoda таки и не нашёл внятного объяснения как получить авторизованного юзер в основном сервис провайдере (
JhaoDa
@jhaoda
Jul 30 2017 17:21
@rorc ссылки ты тоже не открываешь?
Действительно, нахрена...
projct1
@projct1
Jul 30 2017 17:21
@jhaoda открываю, если ты про гугловские
JhaoDa
@jhaoda
Jul 30 2017 17:22
@rorc а, только мои не открываешь?
projct1
@projct1
Jul 30 2017 17:23
@jhaoda не понимаю, при чём там ваще вью композеры?
когда мне просто зарегать надо грёбаный дебагбар для юзера с айди === 1 и всё
JhaoDa
@jhaoda
Jul 30 2017 17:26
@rorc это невозможно, потому что на этапе регистрации и загрузки провайдера юзера не существует, он появится при отработке стэка мидлварей
projct1
@projct1
Jul 30 2017 17:26
@jhaoda ясн (
JhaoDa
@jhaoda
Jul 30 2017 17:26
Зато возможно зарегать в boot какое-нить замыкание, которое будет вызываться ВСЕГДА и там сделать всё, что нужно. И вью композер как раз для этого и служит
projct1
@projct1
Jul 30 2017 17:38
@jhaoda для моей задачи всё равно это не годится)
        \View::composer('layouts.admin', function() {
            if (\Auth::id() == 1) {
                $this->app->register(DebugbarServiceProvider::class);
                $this->app->register(IdeHelperServiceProvider::class);
                $this->app->alias('Debugbar', Facade::class);
            }
        });
не работает)
JhaoDa
@jhaoda
Jul 30 2017 17:39
@rorc что именно не работает?
projct1
@projct1
Jul 30 2017 17:39
@jhaoda дебагбар не подгружается))
JhaoDa
@jhaoda
Jul 30 2017 17:40
@rorc а юзера-то получаешь?
projct1
@projct1
Jul 30 2017 17:41
@jhaoda да
JhaoDa
@jhaoda
Jul 30 2017 17:42
@rorc ну значит поздно уже дебагбар грузить в композере, надо ещё какой-то вариант с замыканием найти. Или на событие аутентификации повеситься
cfg dsfgd f df
@entermix
Jul 30 2017 17:54
Привет всем! Может кто то сбросить результат (сгенерированный SQL запрос), если установлена подобная связь? https://laravel.com/docs/5.4/eloquent-relationships#has-many-through
KarmaBot
@KarmaBot
Jul 30 2017 17:54
Будь как дома, @entermix, я ни в чем не откажу. Много мануалов, коль желаешь, покажу :)
Alexander
@Dualse
Jul 30 2017 17:55
@entermix а ты сам не можешь этого сделать?
Ну то есть $myModel->with('relastion')->toSql() сделать нету возможности?
cfg dsfgd f df
@entermix
Jul 30 2017 17:56
К сожалению нету Laravel под рукой
Oleg Arkhipov
@Oleg-Arkhipov
Jul 30 2017 18:32

Ребята, такой вопрос по socket.io: вот у меня PassportJs-ная миддлвара подключена для socketio, она поставляет объект аутентифицированного юзера (вытягивающийся из MySQL) в socket:

io.on('connection', function (socket) {
  const user = socket.request.user;
  socket.on('event', (data) => {
    // ...
  });
});

Я хочу в обработчике event'а делать решение на основе свойста юзера (например, направить его сообщение в ту комнату чата, в которой он находится - поле room_id в таблице).
Переменная user тут данные содержит на момент установления подключения, то есть они потом (когда у юзера изменятся в таблице) устаревшими будут.
При этом делать проверку ведь нужно при каждом вызове обработчика event, даже если это сильно частое событие.
Вопрос - я правильно понимаю, что нормальным решением является поместить юзера в редис (он имеется в «проекте» уже), там обновлять данные о нём параллельно с БД, и оттуда проверять на каждом запросе (должно же быстро быть, вроде)?

Oleksandr Solodovnikov
@age007nt
Jul 30 2017 19:49
Ребята, здравствуйте. Возможно кто использовал Socialite, и имел ConnectException (cURL error 7)? Не понимаю в чем проблема. Дело в том что вчера, пока тестировал - работало, потом перестало, сегодня с утра после настройки все работало, позже опять перестало. Возможно где-то есть какие то лимиты? Перерыл все в интернете, решение так и не нашел. Буду очень признателен за подсказки.
KarmaBot
@KarmaBot
Jul 30 2017 19:49
@age007nt, привет =)
Oleksandr Solodovnikov
@age007nt
Jul 30 2017 19:50
@age007nt точнее файл CurlFactory.php, 186 строка:
$error = isset($connectionErrors[$easy->errno]) ? new ConnectException($message, $easy->request, null, $ctx) : new RequestException($message, $easy->request, $easy->response, null, $ctx);
@age007nt При чем работало отлично и с Facebook и с Google+, а когда перестало работать - то не работало с обоими соц. сетями.
cfg dsfgd f df
@entermix
Jul 30 2017 21:06
Проверьте соединение
Arsen Soroka
@arsen-s
Jul 30 2017 22:36
@rorc здесь посмотри еще barryvdh/laravel-debugbar#93