These are chat archives for LaravelRUS/chat

8th
Aug 2017
Михаил
@Mihail04
Aug 08 2017 06:45 UTC
@atehnix ясно. Спасибо.
KarmaBot
@KarmaBot
Aug 08 2017 06:45 UTC
Спасибо (+1) для @atehnix принято! Текущая карма +224.
OsipovMN
@projct1
Aug 08 2017 07:28 UTC
подскажите плз, в контроллерах пропала возможность указывать мидлверы через переменную $middleware?
пытаюсь прописать в контроллере нечто такое protected $middleware = ['nullToNull' => ['only' => ['index']]], выдаёт ошибку Undefined index: options
заглянув в код, понял в каком формате надо задавать
    protected $middleware = [
        [
            'middleware' => 'nullStringToNull',
            'options' => ['only' => 'index']
        ]
    ];
Evgeny Stefanenko
@KomAuras
Aug 08 2017 07:35 UTC
@rorc я не спец но может через метод middleware работать ?
$this->middleware('nullStringToNull',['only' => 'index']);
а ты по моему переопределить переменную пытаешься.
OsipovMN
@projct1
Aug 08 2017 08:00 UTC
@HectorPrima нет, можно и так и так
Alexander Avakov
@pinguinjkeke
Aug 08 2017 09:35 UTC
@Oleg-Arkhipov да, пользуюсь
Sergey Batmanov
@sergeybatmanov
Aug 08 2017 10:28 UTC
А в файлах конфига подключаемых пакетов можно ли как то получить вошедшего пользователя?
Lander931
@Lander931
Aug 08 2017 10:30 UTC
Привет, нужно реализовать мультиязычность на 2х доменах (.com .ru), подскажите саму логику как сделать это. Заходишь на .ru -> даёт русский контент, заходишь на .com -> английский.
KarmaBot
@KarmaBot
Aug 08 2017 10:30 UTC
Hello, @Lander931!
Lander931
@Lander931
Aug 08 2017 10:32 UTC
В голове только выдерание из урл и дальше условия
PhpNet
@PhpNet
Aug 08 2017 10:37 UTC

Приветствую. Подскажите, где завтыкал? Вроде все по мануалу. Переношу сайт со старого движка на лару, импортирую контент.

$model = Post::create([
                                'title' => $v['properties']['title']['value'],
                                'annotation' => $v['properties']['annotation']['value'],
                                'content' => $v['properties']['annotation']['value'],
                                'deleted_at' => $v['deleted_at'],
                                'created_at' => $v['created_at'],
                                'updated_at' => $v['updated_at'],
]);

В модели Post заполнено protected $fillable = ['*'],
$v['properties']['title']['value'] и т.д. не NULL (дамп тому свидетель). при этом во все поля всех строк вставляется NULL:(

KarmaBot
@KarmaBot
Aug 08 2017 10:37 UTC
@PhpNet, привет, как настроение?
PhpNet
@PhpNet
Aug 08 2017 10:39 UTC
Post::create(['title'=>'foo']) тоже вставляет null оО
Sergey Batmanov
@sergeybatmanov
Aug 08 2017 10:40 UTC
@PhpNet а если указать fillable конкретно?
PhpNet
@PhpNet
Aug 08 2017 10:42 UTC
@sergeybatmanov блин, оказалось, оно не умеет * в fillable. $guarded = ['id'] заработало, туплю что то)
Daniil Kuznetsov
@DanUnited
Aug 08 2017 10:52 UTC
В шаблонизаторе Blade можно во вьюхе указать статический массив и пройтись циклом по нему для вывода ?
Igor Markin
@markinigor
Aug 08 2017 10:53 UTC
@PhpNet так ты б в доке посмотрел, что правильно отключать защиту protected $guarded = [];
Evgeny Stefanenko
@KomAuras
Aug 08 2017 11:07 UTC
таймаут должен быть меньше частоты запуска, задача два/три раза не запустится с учетом tries=3 и того что она может минут 7-8 выполняться?
$schedule->command('queue:work --once --sleep=5 --tries=3 --timeout=600')->everyFiveMinutes();
или второй раз artisan queue:work не запустится пока первый не отработает?
Oleg Arkhipov
@Oleg-Arkhipov
Aug 08 2017 11:11 UTC

@pinguinjkeke

да, пользуюсь

Слушай, перед тобой не вставала ли такая проблема: сокет начинает асинхронно устанавливать соединение при подключении плагина, но посылка данных с клиента (this.$socket.emit) происходит в created()/mounted() (как вариант) компонента отображаемого быстрее, чем соединение установилось - как следстие, данные не отправляются.
Я знаю, что в socket.io нужно ждать события connect от сервера. Ты как-то реализовывал это удобно с этим плагином?

Ilnur Rav
@nyrik8989
Aug 08 2017 11:33 UTC
Привет
KarmaBot
@KarmaBot
Aug 08 2017 11:33 UTC
@nyrik8989, ну рассказывай. Как жизнь? :)
Ilnur Rav
@nyrik8989
Aug 08 2017 11:36 UTC
    {!! $model->text !!}
в модели текст новости, текс содержит хтмл элементы, !!!задача в середину текста вставить рекламу??
Как используя ВьюКомпозер и Бладе шаблонизатор реализовать ??
Или если есть другие мысли по реализации, буду благодарен
разбиваешь текст на слова - считаешь сколько слов - делаешь сплит массива на половину - вставляешь элемент рекламы - соединяешь 2 массива в строку.
Ilnur Rav
@nyrik8989
Aug 08 2017 11:46 UTC

@aios ```
/*

     * NATIVE
     */
    $native_adConfig = Cache::remember(
        env('REDIS_APP_NAME') . ':news_page_native_ad',
        env('REDIS_TTL'),
        function () {
            return WidgetConfig::where('widget_config_type', 'native_ad')
                ->with([
                    'widgetable',
                ])
                ->get();
        });

    $native_ad = $native_adConfig->map(
        function ($config, $key) {
            return $config->widgetable->render($config);
        });

    //todo нужно решить куда переместить  эту логику, да так чтобы не связвать два компонента новости и рекламу
    //todo решить, обрабатывать каждый раз при вызове или сохранять рекламный блок/шорткод в тексте
    $shortCode = '[**NATIVE**]';
    $explodeTag = '<p>';
    $nativeAd = $native_ad->toArray();

    $newsTextArray = explode($explodeTag, $model->text);
    array_splice($newsTextArray, ceil(count($newsTextArray) / 2), 0, $shortCode);
    $newsTextStringAd = implode($newsTextArray, $explodeTag);
    $model->text = str_replace($shortCode, implode($nativeAd), $newsTextStringAd);

```

KarmaBot
@KarmaBot
Aug 08 2017 11:46 UTC
@nyrik8989, у нас тут принято писать кратко и по делу. А если нужно показать длинный код, то можно использовать pastebin-сервис, например gist.github.com или laravel.io/bin.
Oleg Arkhipov
@Oleg-Arkhipov
Aug 08 2017 11:46 UTC
@nyrik8989 вообще есть такая инфа, что подобная разрывающая реклама посреди цельного контента плоха для UX
Ilnur Rav
@nyrik8989
Aug 08 2017 11:47 UTC
@aios субъективно это както костыльно чтоли
@Oleg-Arkhipov согласен, но требование такие
Есть ли более элегантное решение???
JhaoDa
@jhaoda
Aug 08 2017 12:04 UTC
@nyrik8989 код не забывай правильно форматировать
kartg
@kartg
Aug 08 2017 12:41 UTC
Здравствуйте!
KarmaBot
@KarmaBot
Aug 08 2017 12:41 UTC
Hello, @kartg!
kartg
@kartg
Aug 08 2017 12:41 UTC
Почему не работает рекурсовно по ftp?
// рекурсивно...
$directories = Storage::allDirectories($directory);
Может кто знает?
Отдает точно также как и $directories = Storage::directories($directory);
такой же массив
Ведь фассад ::allDirectories должен же пройтись по всем и вернуть все подпапки, так ведь?
kartg
@kartg
Aug 08 2017 12:47 UTC
Есть кто?
KarmaBot
@KarmaBot
Aug 08 2017 12:47 UTC
@kartg, и какой ответ ты ожидаешь услышать?
kartg
@kartg
Aug 08 2017 12:47 UTC
Не ужели никто не поможет в таком замечательном сообществе?
Alexander Avakov
@pinguinjkeke
Aug 08 2017 13:04 UTC
@Oleg-Arkhipov объявляй такие $emit не в mounted/created, а в sockets: { connected () {...} }
@Oleg-Arkhipov и пиши лучше в ЛС, а то по два часа между ответами разница :)
kartg
@kartg
Aug 08 2017 13:07 UTC
Люди добрые и злые, в чем подвох то?
Oleg Smirnov
@soeOleg
Aug 08 2017 14:02 UTC
@kartg Storage использует Flysystem. смотреть надо тут https://github.com/thephpleague/flysystem и настройки твоего ftp
@kartg ты вывод чем смотрел ?
kartg
@kartg
Aug 08 2017 14:05 UTC
xdebug
@soeOleg Разницы нет для FTP что Storage::directories($directory) и что Storage::allDirectories($directory)
Отдает массив директорий внутри папки, но без рекурсии
Oleg Smirnov
@soeOleg
Aug 08 2017 14:09 UTC
@kartg ftp сервер у тебя поддерживает passive?
kartg
@kartg
Aug 08 2017 14:10 UTC
ftp.zakupki.gov.ru
Oleg Smirnov
@soeOleg
Aug 08 2017 14:12 UTC
@soeOleg ту подвох в том что лара выводит то что она получает. то есть она поучает только первичное дерево, без вложений. что дали то и получила
kartg
@kartg
Aug 08 2017 14:12 UTC
passive пишут - да
Oleg Smirnov
@soeOleg
Aug 08 2017 14:18 UTC
@kartg тебе в сторону твой ftp<->Flysystem. накати чистую в нативе и проверь.
kartg
@kartg
Aug 08 2017 14:20 UTC
Ясно...
inversator
@inversator
Aug 08 2017 15:32 UTC
Добрый вечер. Выбираю чат для лара, подскажите какой выбрать?
KarmaBot
@KarmaBot
Aug 08 2017 15:32 UTC
Не узнал тебя, @inversator. Богатым будешь :)
Kirill Nesmeyanov
@SerafimArts
Aug 08 2017 15:33 UTC
@inversator какой напишешь, такой и будет
это же не CMS плагинчиками фигачить
@inversator чтобы не сильно париться с нодой - можно в сторону ratchet посмотреть http://socketo.me/
good-web-master
@good-web-master
Aug 08 2017 15:35 UTC
зачем в larvel файл .env когда есть такие же настройки в файлах с расширением .php ?
Kirill Nesmeyanov
@SerafimArts
Aug 08 2017 15:35 UTC
@good-web-master это конфиги переменных окружения
локально одно, на проде другое
inversator
@inversator
Aug 08 2017 15:36 UTC
@SerafimArts Ок, спасибо. Раньше использовал https://comet-server.com/, но думал есть что-то более ориентированное на laravel
good-web-master
@good-web-master
Aug 08 2017 15:37 UTC
@SerafimArts уже более понятно, но значение переменой то что продукт находится в продакшене, тогда где должен находится?
Oleg Arkhipov
@Oleg-Arkhipov
Aug 08 2017 15:38 UTC
@good-web-master в .env же есть APP_ENV=
good-web-master
@good-web-master
Aug 08 2017 15:40 UTC
@Oleg-Arkhipov мне тут объяснили то что файл .env файл настроек для локальной машины, а файлы .php для продакшена, или что то я не так понял?
Oleg Arkhipov
@Oleg-Arkhipov
Aug 08 2017 15:41 UTC
@good-web-master для продакшена в идеале все эти значения в настоящих переменных среды, и всего делов. .env файл просто замена для них (смотри пакет dotenv), на локалке особенно удобно.
О каком .php вообще речь?
Kirill Nesmeyanov
@SerafimArts
Aug 08 2017 15:41 UTC
@good-web-master нет, не так
env - это просто дополнительные "донастройки", которые могут меняться в разных окружениях
всякие ключики, соединения с бд и прочее
И которых, естественно, не должно быть в гите.
.env.example - файл шаблона, из которого можно сгенерить дефолтные конфиги для окружения
Oleg Arkhipov
@Oleg-Arkhipov
Aug 08 2017 15:43 UTC
@good-web-master https://12factor.net/ вот прикольная штука, в данном случае раздел III в частности
good-web-master
@good-web-master
Aug 08 2017 15:44 UTC
@SerafimArts спасибо
KarmaBot
@KarmaBot
Aug 08 2017 15:44 UTC
Спасибо (+1) для @SerafimArts принято! Текущая карма +758.
good-web-master
@good-web-master
Aug 08 2017 15:44 UTC
@Oleg-Arkhipov спасибо
KarmaBot
@KarmaBot
Aug 08 2017 15:44 UTC
Спасибо (+1) для @Oleg-Arkhipov принято! Текущая карма +7.
OsipovMN
@projct1
Aug 08 2017 18:15 UTC
отрендерить только одну секцию можно лишь таким способом?
view('layout')->renderSections()['table'];
Kirill Nesmeyanov
@SerafimArts
Aug 08 2017 18:15 UTC
@rorc да (нюансы не играют значения)
OsipovMN
@projct1
Aug 08 2017 18:16 UTC
@SerafimArts а почему так печально, вроде бы очевидная вещь, если нужна только одна секция?
@SerafimArts например при аякс-запросе рендерить только 1 секцию
return $request->ajax() ? $view->renderSections()['table'] : $view;
Dinar Garipov
@garf
Aug 08 2017 18:44 UTC
Сто лет тут не был уже :)
Привет ребята :)
KarmaBot
@KarmaBot
Aug 08 2017 18:44 UTC
@gaaarfild, здравствуй.
Kirill Nesmeyanov
@SerafimArts
Aug 08 2017 18:47 UTC
@garf ты всё ещё не прощён за укорачивание своего ника! Привет =)))
Dinar Garipov
@garf
Aug 08 2017 18:47 UTC
Черт побери :)
Как дела у вас?
Kirill Nesmeyanov
@SerafimArts
Aug 08 2017 18:48 UTC
@garf как было, за тем исключением, что болталка сейчас тут https://gitter.im/LaravelRUS/offtop
opensgame
@opensgame
Aug 08 2017 19:03 UTC
Добрый день!
Хочу услышать ваше мнение по поводу функции которая проверяет что файл является картинкой
private function isImg($f){
        $ext=explode('.',$f->getClientOriginalName());
        if(count($ext)!=2)return false;
        $exts = array("jpg", "png", "gif", "JPEG");
        if (!in_array($ext[1], $exts))return false;

        $infoGetimagesize = getimagesize ($f->getPathName());
        if(count($infoGetimagesize)!=6)return false;
        if($infoGetimagesize[0]<=0 or $infoGetimagesize[1]<=0  or $infoGetimagesize['bits']<=0)return false;
        if(!($infoGetimagesize[2]==1 or $infoGetimagesize[2]==2 or $infoGetimagesize[2]==3))return false;

        $info = finfo_open(FILEINFO_MIME_TYPE   );
        $ext=explode('/',finfo_file($info,$f->getPathName()));
        if(count($ext)!=2)return false;
        if (!in_array($ext[1], $exts))return false;

        $info = finfo_open(FILEINFO_PRESERVE_ATIME      );
        $info=finfo_file($info,$f->getPathName());
        $info=explode(' ',explode(', ',$info)[1]);
        if($infoGetimagesize[0]!=$info[0] or $infoGetimagesize[1]!=$info[2] )return false;//сравниваем размеры картинок

        return true;
    }
KarmaBot
@KarmaBot
Aug 08 2017 19:03 UTC
Будь как дома, @opensgame, я ни в чем не откажу. Много мануалов, коль желаешь, покажу :)
@opensgame, чтобы показать длинный листинг кода желательно использовать pastebin-сервис, например gist.github.com или laravel.io/bin.
Oldy
@oldy777
Aug 08 2017 20:33 UTC
@opensgame а если имя my.super.summer.2015.jpg ?
и вроде как есть метод возвращающий mime? по нему вроде как более надежно проверять чем просто по имени с расширением
@opensgame короче жесть какая то, возьми готовое решение