These are chat archives for LaravelRUS/chat

16th
Aug 2017
Ислам
@IMiciew_twitter
Aug 16 2017 06:44
@lebeduhaa отправленные смс сохраняются в файлы userdata\temp\email
Anton Vorontsov
@symbios-zi
Aug 16 2017 06:54
доброе утро
OsAlex
@OsAlex
Aug 16 2017 06:58

Доброе утро
Копаясь в коде доставшемся в наследство нашел

    Route::get('run/{subscription}/{theme}/{lesson}', 'CoursesController@run')->name('run');

        public function run(Subscription $subscription, Theme $theme, Lesson $lesson, Result $resultModel) {
                           ....
                          $results = $resultModel->getSubscriptionResult($subscription->id);
                           ....
         }

class Result extends Model  {
    public function getSubscriptionResult($subscription_id) {
        return $this->where('subscription_id', '=', $subscription_id)->get();
    }
}

Вопрос - получение объекта нестатичным методом - хорошая практика или нет?
Появление объекта Result $resultModel не переданного в параметрах, но объявленного это хак ларавеля или рнр ?

Anton Vorontsov
@symbios-zi
Aug 16 2017 07:03
@OsAlex рнр?
PHP?
@OsAlex это не хак. Это DependencyInjection https://laravel.com/docs/5.4/controllers#dependency-injection-and-controllers
OsAlex
@OsAlex
Aug 16 2017 07:06
@symbios-zi да PHP. интересно стало, как и почему это работает. Ок, я представлял себе это по другому.
основной вопрос о получении объекта нестатичным методом реализованном в самом классе, мне кажется это не очень правильно
Anton Vorontsov
@symbios-zi
Aug 16 2017 07:08
@OsAlex статические методы зло, их сложно тестировать. Получение объекта нестатичным методом это нормально
Uladzislau Danilchyk
@danilchican
Aug 16 2017 08:32
Всем доброго дня! Ребята, недавно копался в таблицах бд, которые создаются "из коробки" и вот возник вопрос: почему для восстановления пароля было решено использовать B-tree index? Понятно, что они имеют свою организацию хранения в памяти и быстрее при поиске, но вот может кто смог бы объяснить подробнее?
KarmaBot
@KarmaBot
Aug 16 2017 08:32
@danilchican, ну рассказывай. Как жизнь? :)
projct1
@projct1
Aug 16 2017 09:04

подскажите плз как назначить мидлвер через Route::resource
пробовал по всякому, например так:

    Route::resource('order', 'OrderController', [
        'except' => ['show'],
        'middleware' => ['nullStrToNull']
    ]);

но безуспешно (

Uladzislau Danilchyk
@danilchican
Aug 16 2017 09:05
@rorc конструкторе контроллера можно
projct1
@projct1
Aug 16 2017 09:06
@danilchican это я знаю, мне через ресурс надо
projct1
@projct1
Aug 16 2017 09:08
@danilchican да я всё прогуглил уже, не нашёл ответа)
nikitadergachov
@nikitadergachov
Aug 16 2017 09:11
@rorc Добавь в группу с middleware
SanyaSPY
@SanyaSPY
Aug 16 2017 09:12
Добрый день, подскажите можно ли вызывать из контроллера метод другого контроллера чтобы не дублировать код?
KarmaBot
@KarmaBot
Aug 16 2017 09:12
@SanyaSPY и тебе не хворать :)
Sergey
@shummm
Aug 16 2017 09:12
@SanyaSPY parent::
projct1
@projct1
Aug 16 2017 09:12
@SanyaSPY сразу скажу это херовая практика, лучше вынеси в трейт функционал и подключать где надо, я уже намучился с этим в своё время)
@nikitadergachov не подходит, мне нужно только для конкретного екшена мидлвер
SanyaSPY
@SanyaSPY
Aug 16 2017 09:13
@rorc понял, спасибо
KarmaBot
@KarmaBot
Aug 16 2017 09:13
Спасибо (+1) для @rorc принято! Текущая карма +18.
nikitadergachov
@nikitadergachov
Aug 16 2017 09:17
@rorc Можно сделать частичную маршрутизацию ресурса, а метод для которого тебе нужен middleware добавить отдельно
projct1
@projct1
Aug 16 2017 09:17
@nikitadergachov да, остаётся только так
@nikitadergachov спс
KarmaBot
@KarmaBot
Aug 16 2017 09:18
Спасибо (+1) для @nikitadergachov принято! Текущая карма +1.
Raswin
@Raswin
Aug 16 2017 11:29
Подскажите пожалуйста, почему whereIn не учитывает NULL в массиве?
Andrey
@daaner
Aug 16 2017 11:31
@Raswin ->whereNotNull попробуй
Raswin
@Raswin
Aug 16 2017 11:34
@Daaner Мне наоборот необходимо учитывать NULL и желательно это устроить с использованием whereIn, так как забираю доступные юзеру данные, а NULL - это дефолтные. Понимаю что могу переопределить в БД значение NULL на что-то по лучше, но интересно почему так.
Видимо только связка whereNull('')->orWhereIn('') решит проблему.
Maksim (Ellrion) Platonov
@Ellrion
Aug 16 2017 13:02
@Raswin тут лара не причем null очень особенное значение в мускуле
Zhukov Sergey
@zhukovsergey
Aug 16 2017 13:06
Приветствую всем, господа, подскажите как вы организуете рутину с формами? Я сам на yii2 пишу, вот поглядываю в сторону laravel. На yii2 я использую виджеты (некоторые формы могу быть со сложной логикой), я посмотрел по гуглу, были в laravel формы какие то, но их выпилили как я понял.
KarmaBot
@KarmaBot
Aug 16 2017 13:06
Приветствую тебя, @webadequate!
JhaoDa
@jhaoda
Aug 16 2017 13:12
@webadequate их выделили в отдельный пакет, но это не виджеты
Zhukov Sergey
@zhukovsergey
Aug 16 2017 13:25
@jhaoda спасибо, попробую поискать.
KarmaBot
@KarmaBot
Aug 16 2017 13:25
Спасибо (+1) для @jhaoda принято! Текущая карма +1588.
Paul Krivenko
@krivenkop
Aug 16 2017 14:56
Здравствуйте. Я недавно начал Laravel, и у меня проблема с аутентификацией, пишу свой контроллер для логина. Так вот проблема в том что, attempt возвращает true, а Auth::check() в коллбэке - false. И в связи с этим аутентификация не проходит. Можете что-то подсказать?
<?php

namespace App\Http\Controllers\Auth;

use \Auth;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class AuthCustomController extends Controller
{

    public function showLogin()
    {
        return view('auth.login');
    }

    public function authenticate(Request $request)
    {
        $loginData = $request->all();
        $credentials = [
            'email' => $loginData['email'],
            'password' => $loginData['password']
        ];

        $remember = $request->has('remember');


        if (Auth::attempt($credentials, $remember, dump( Auth::check() /* false */ )) ) {
            echo '<br>confirmed<br>';
            return redirect()->intended('/');
        }

        return redirect()->back();
    }

}
KarmaBot
@KarmaBot
Aug 16 2017 14:56
Привет, @krivenkop! Проходи, присаживайся. В ногах правды нет :)
@krivenkop, чтобы показать длинный листинг кода желательно использовать pastebin-сервис, например gist.github.com или laravel.io/bin.
JhaoDa
@jhaoda
Aug 16 2017 15:13
@krivenkop а зачем ты пишешь свой контроллер для логина, если он уже есть? Чисто в образовательных целях?
Paul Krivenko
@krivenkop
Aug 16 2017 15:14
Именно
JhaoDa
@jhaoda
Aug 16 2017 15:14
@krivenkop ну тогда лучше было взять и разобраться, как написан имеющийся
@krivenkop также я не вижу в твоём коде коллбэков
Paul Krivenko
@krivenkop
Aug 16 2017 15:17
@jhaoda извиняюсь, может я не так назвал, короче в аттемпте третий параметр
JhaoDa
@jhaoda
Aug 16 2017 15:17
@krivenkop а откуда там третий параметр?
Paul Krivenko
@krivenkop
Aug 16 2017 15:23
@jhaoda во я тормоз, где то на стаке увидел, что кто-то так сделал и себе добавил третий параметр. Все работает, спасибо
KarmaBot
@KarmaBot
Aug 16 2017 15:23
Спасибо (+1) для @jhaoda принято! Текущая карма +1589.
JhaoDa
@jhaoda
Aug 16 2017 15:24
@krivenkop я почти уверен, что ты проигнорируешь мой совет, но всё же — читай официальную документацию и не смотри пока что на всякие «стаки». И огради тебя Ктулху от просмотра русскоязычных видосов
Ислам
@IMiciew_twitter
Aug 16 2017 15:55
$loginData = $request->all(); - очень часто вижу такой код. Для чего это делать?
JhaoDa
@jhaoda
Aug 16 2017 15:58
@IMiciew_twitter увидели где-то и копируют бездумно. А про ->only() и ->except() в этом «где-то» не рассказывали
SanyaSPY
@SanyaSPY
Aug 16 2017 16:11
Подскажите в ларке есть готовая система перехвата и обработка ошибок?
Kirill Nesmeyanov
@SerafimArts
Aug 16 2017 16:12
@SanyaSPY есть
SanyaSPY
@SanyaSPY
Aug 16 2017 16:19
@SerafimArts а поподробнее?
Kirill Nesmeyanov
@SerafimArts
Aug 16 2017 16:19
SanyaSPY
@SanyaSPY
Aug 16 2017 16:21
@SerafimArts вот я лошара ;-), доки открытые а туда не смотрю, спасибо
KarmaBot
@KarmaBot
Aug 16 2017 16:21
Спасибо (+1) для @SerafimArts принято! Текущая карма +760.
Kirill Nesmeyanov
@SerafimArts
Aug 16 2017 16:21
kek =)
Paul Krivenko
@krivenkop
Aug 16 2017 17:23
@jhaoda ОК учту, а то я как раз русские видосы и смотрел, и по ним учился...
Kirill Nesmeyanov
@SerafimArts
Aug 16 2017 17:24

@IMiciew_twitter увидели где-то и копируют бездумно. А про ->only() и ->except() в этом «где-то» не рассказывали

@jhaoda если это форм реквест, то всё ок

хотя лучше перестраховаться на всякий случай, это да
JhaoDa
@jhaoda
Aug 16 2017 17:24
@SerafimArts а?
Kirill Nesmeyanov
@SerafimArts
Aug 16 2017 17:25
@jhaoda поправил
JhaoDa
@jhaoda
Aug 16 2017 17:25
@SerafimArts а что формреквест?
Kirill Nesmeyanov
@SerafimArts
Aug 16 2017 17:25
да, я ступил
вспомнил, что там включающая валидация, а не исключающая
ну если так можно выразиться
и лишние параметры всё равно могут прилететь
JhaoDa
@jhaoda
Aug 16 2017 17:26
@SerafimArts да даже не в этом дело, ты дальше-то смотри код
Kirill Nesmeyanov
@SerafimArts
Aug 16 2017 17:28
@jhaoda аа, я выше уже и забыл что было, а сейчас не глянул
На будущее, код выше лучше переписать примерно так:
public function authenticate(Request $request, Guard $auth)
{
    if ($auth->attempt($request->only('email', 'password'), $request->get('remember', false)) ) {
        return redirect()->route('home');
    }

    return redirect()->route('auth');
}
а если уж совсем трушно и через DI, то redirect() заменяется на Redirector $redirector аргумент
JhaoDa
@jhaoda
Aug 16 2017 17:34
@SerafimArts $request->get('remember', false) прекрасно заменяется на $request->has('remember')
@SerafimArts и redirect()->intended('/') ты выкинул зря, его надо просто поменять на redirect()->intended(route('home'))
Kirill Nesmeyanov
@SerafimArts
Aug 16 2017 17:36
@jhaoda не совсем
has возвращает тру или фолс в случае наличия аргумента в запросе
JhaoDa
@jhaoda
Aug 16 2017 17:36
@SerafimArts и?
@SerafimArts rememer, как правило, это чекбокс, который попадает в запрос только если он отмечен.
Kirill Nesmeyanov
@SerafimArts
Aug 16 2017 17:37
не в случае ajax аутентификации
через FormData, например
JhaoDa
@jhaoda
Aug 16 2017 17:38
@SerafimArts ты уверен, что FormData его тоже добавит, даже если он не отмечен? Я просто никогда такого не делал, а наши фронтовики не жаловались
Kirill Nesmeyanov
@SerafimArts
Aug 16 2017 17:44
@jhaoda ок, руками если
JhaoDa
@jhaoda
Aug 16 2017 17:44
@SerafimArts если руками, то ССЗБ
Kirill Nesmeyanov
@SerafimArts
Aug 16 2017 17:44
короче, если есть вариант не оверинжинеря построить систему лучше, то лучше сделать так
благо на пяток символов отличается, а логика меняется, позволяя избавиться от потенциального бага
lebeduhaa
@lebeduhaa
Aug 16 2017 19:49
Ребята может кто встречал подобную ошибку при отправке сообщения на почту?
stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed
как решить проблему?
Vladimir Stempel
@dark-s
Aug 16 2017 19:55
привет всем, как блин в ларке установить куки?)
KarmaBot
@KarmaBot
Aug 16 2017 19:55
Будь как дома, @dark-s, я ни в чем не откажу. Много мануалов, коль желаешь, покажу :)
Vladimir Kikot
@shoxy
Aug 16 2017 20:04
@dark-s \Cookie::queue(cookie('name, 'value'));
Vladimir Stempel
@dark-s
Aug 16 2017 20:09
@shoxy а как получить ее при первом заходе на страницу?
Vladimir Kikot
@shoxy
Aug 16 2017 20:11
@dark-s я когда-то хелпер писал для получения кук. https://paste.laravel.io/Wz9r1
MetaDone
@MetaDone
Aug 16 2017 20:29
@lebeduhaa http://php.net/manual/ru/function.stream-context-set-option.php
verify_peer_name ставишь false
lebeduhaa
@lebeduhaa
Aug 16 2017 20:31
@MetaDone это в каком файле такой параметр?
MetaDone
@MetaDone
Aug 16 2017 20:34
@lebeduhaa скинь настройки .env которые касаются почты
lebeduhaa
@lebeduhaa
Aug 16 2017 20:34
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=mygmail@gmail.com
MAIL_PASSWORD=mypass
MAIL_ENCRYPTION=tls
JhaoDa
@jhaoda
Aug 16 2017 20:35
@lebeduhaa оформи код
KarmaBot
@KarmaBot
Aug 16 2017 20:35
@lebeduhaa, чтобы код легко читался, поставь перед ним и после него по строке с тремя обратными апострофами (символ ` на клавише с буквой «Ё»).
Узнать больше про оформление сообщений можно в справке по Markdown (кнопка M↓ внизу справа).
Кстати, свои сообщения здесь можно редактировать... ;)
lebeduhaa
@lebeduhaa
Aug 16 2017 20:36
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=mygmail@gmail.com
MAIL_PASSWORD=mypass
MAIL_ENCRYPTION=tls
JhaoDa
@jhaoda
Aug 16 2017 20:37
@lebeduhaa чувак, ну специально же написано «Кстати, свои сообщения здесь можно редактировать...»
MetaDone
@MetaDone
Aug 16 2017 20:37
@lebeduhaa MAIL_ENCRYPTION=ssl
попробуй так, норм конфига под рукой нет чтоб подсмотреть
и не забудь php artisan config:cache
lebeduhaa
@lebeduhaa
Aug 16 2017 20:42
@MetaDone блин не помогло
та же ошибка
MetaDone
@MetaDone
Aug 16 2017 20:43
@lebeduhaa ок, надо подумать
Vladimir Stempel
@dark-s
Aug 16 2017 20:43
@shoxy Спасибо большое, очень помог)
KarmaBot
@KarmaBot
Aug 16 2017 20:43
Спасибо (+1) для @shoxy принято! Текущая карма +4.
JhaoDa
@jhaoda
Aug 16 2017 20:44
@dark-s а если доку начать читать, то там помощи ещё больше...
MetaDone
@MetaDone
Aug 16 2017 20:45
@lebeduhaa config/mail.php
что прописано в 'encryption'?
lebeduhaa
@lebeduhaa
Aug 16 2017 20:45
@MetaDone
    'encryption' => env('MAIL_ENCRYPTION', 'ssl'),
Vladimir Stempel
@dark-s
Aug 16 2017 20:46
@jhaoda да читал я) там в основном через response показано как передавать, а мне это не подходит
MetaDone
@MetaDone
Aug 16 2017 20:47
@lebeduhaa попробуй изменить порт на 465 в .env
и после опять php artisan config:clear
lebeduhaa
@lebeduhaa
Aug 16 2017 20:49
@MetaDone о что-то новое
Connection could not be established with host smtp.gmail.com [ #0]
MetaDone
@MetaDone
Aug 16 2017 20:50
@lebeduhaa ок, надо подумать
Vladimir Stempel
@dark-s
Aug 16 2017 20:50
Полное доменное имя службы SMTP smtp-relay.gmail.com smtp.gmail.com aspmx.l.google.com
попробуй другие домены прописать и попробуй отправить через 25 порт без шифрования
только на почту gmail отправляй
MetaDone
@MetaDone
Aug 16 2017 20:52
@lebeduhaa smtp.gmail.com резолвится на том хосте где пробуешь?
Vladimir Stempel
@dark-s
Aug 16 2017 20:52
aspmx.l.google.com для 25 порта
lebeduhaa
@lebeduhaa
Aug 16 2017 20:53
@MetaDone я не на хосте
openserver
Vladimir Stempel
@dark-s
Aug 16 2017 20:53
без разницы
MetaDone
@MetaDone
Aug 16 2017 20:53
@lebeduhaa значит там попробуй пингануть к примеру smtp.gmail.com
Vladimir Stempel
@dark-s
Aug 16 2017 20:53
@lebeduhaa а вообще сначала попробуй mailtrap.io, может у тебя что-то не так
у меня через него отправляются письма нормально
lebeduhaa
@lebeduhaa
Aug 16 2017 20:56
блин с разными доменами и разными портами одна и та же ошибка
MetaDone
@MetaDone
Aug 16 2017 20:57
@lebeduhaa было бы полезно узнать что за ошибка
полный текст
lebeduhaa
@lebeduhaa
Aug 16 2017 20:57
@MetaDone та же
Connection could not be established with host aspmx.l.google.com
Vladimir Stempel
@dark-s
Aug 16 2017 20:59
запусти в консоли
ping aspmx.l.google.com
MetaDone
@MetaDone
Aug 16 2017 20:59
@lebeduhaa пробовал пингануть smtp.google.com? и это не полный текст, должно еще быть что-то типа [Connection refused #111]
Vladimir Stempel
@dark-s
Aug 16 2017 21:00
smtp.gmail.com
на гугл не пингует
lebeduhaa
@lebeduhaa
Aug 16 2017 21:01
у меня на aspmx.l.google.com нормально пингануло
MetaDone
@MetaDone
Aug 16 2017 21:01
@dark-s опечатался слегка
lebeduhaa
@lebeduhaa
Aug 16 2017 21:02
и на smtp.gmail.com тоже
Vladimir Stempel
@dark-s
Aug 16 2017 21:04
MAIL_DRIVER=smtp
MAIL_HOST=aspmx.l.google.com
MAIL_PORT=25
MAIL_FROM_ADDRESS=stempelv@gmail.com
MAIL_USERNAME=stempelv@gmail.com
MAIL_PASSWORD=*********
MAIL_ENCRYPTION=null
с такими настройками отправилось
MetaDone
@MetaDone
Aug 16 2017 21:05
lebeduhaa
@lebeduhaa
Aug 16 2017 21:06
@dark-s блин а у меня фигня какая-то
Expected response code 250 but got code "550", with message "550-5.7.1 [176.60.195.83] The IP you're using to send mail is not authorized to
550-5.7.1 send email directly to our servers. Please use the SMTP relay at your
550-5.7.1 service provider instead. Learn more at
550 5.7.1 https://support.google.com/mail/?p=NotAuthorizedError p128si707441lfd.528 - gsmtp
"
Vladimir Stempel
@dark-s
Aug 16 2017 21:13
получилось отправить с tls через 587 порт, правда пришлось включить доступ из ненадежных источников в настройках аккаунта
lebeduhaa
@lebeduhaa
Aug 16 2017 21:13

отключил антивирусник теперь с такими конфигурациями

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=mymail@gmail.com
MAIL_PASSWORD=mypass
MAIL_ENCRYPTION=tls

но выдаёт теперь ошибку:
Expected response code 250 but got code "535", with message "535-5.7.8 Username and Password not accepted. Learn more at
535 5.7.8 https://support.google.com/mail/?p=BadCredentials o194sm435879lfo.11 - gsmtp
"
учётку я перепроверил там всё верно с логином и паролем

@dark-s это где такие настройки?
Vladimir Stempel
@dark-s
Aug 16 2017 21:14
https://myaccount.google.com/lesssecureapps включи и проверь еще раз
lebeduhaa
@lebeduhaa
Aug 16 2017 21:17
@dark-s боже спасибо тебе огромное
Vladimir Stempel
@dark-s
Aug 16 2017 21:17
@lebeduhaa да не за что))
lebeduhaa
@lebeduhaa
Aug 16 2017 21:17
@dark-s просто ваще затащил
я уже который день сижу с этой фигнёй
огромное спасибо
KarmaBot
@KarmaBot
Aug 16 2017 21:17
Спасибо (+1) для @dark-s принято! Текущая карма +2.
Vladimir Stempel
@dark-s
Aug 16 2017 21:18
@lebeduhaa я обычно не замарачиваюсь с почтой на локалке, уже на хосте тестирую
lebeduhaa
@lebeduhaa
Aug 16 2017 21:19
ну да я читал что на локалке оно может не работать а на хосте будет нормально всё
но я пока что учусь вот первый проект дали делать поэтому пока ничего на хосте даже не тестил)
@dark-s спасибо еще раз)
KarmaBot
@KarmaBot
Aug 16 2017 21:20
Спасибо (+1) для @dark-s принято! Текущая карма +3.
Vladimir Stempel
@dark-s
Aug 16 2017 21:20
@lebeduhaa можешь mailtrap.io юзать, это сервис для тестирования почты, для ларки самое оно
MetaDone
@MetaDone
Aug 16 2017 21:20
@lebeduhaa на хосте ставишь MAIL_DRIVER=log и не волнуешься
lebeduhaa
@lebeduhaa
Aug 16 2017 21:23
@MetaDone да и тебе кстати спасибо)
вообще хорошо что есть такие комюнити
не знаю как бы я учился без них
спасибо ребята