Ответы пользователя по тегу Laravel
  • Что нужно для оповещения пользователей RealTime?

    chelkaz
    @chelkaz Автор вопроса
    Идеально без сторонних сервисов - https://opensource.mail.ru/Centrifugo
    Ответ написан
    Комментировать
  • Можно ли обрывать выполнение приложения из кода модели?

    chelkaz
    @chelkaz
    Так в контроллере делается firstOrFail() почему этим не пользуетесь? И что стоит дописывать к модели в контроллере ->firstOrFail()
    Ответ написан
    2 комментария
  • Как отдать PDF на скачку?

    chelkaz
    @chelkaz
    Добавьте заголовки:
    $pdf = \App::make('dompdf.wrapper');
    $pdf->loadView('pdf.offer', [ 'offer' => $offer ]);
    header("Content-type:application/pdf");
    header("Content-Disposition:attachment;filename=".str_slug($offer->title . '_' . $offer->id).'.pdf');
    return $pdf->download(str_slug($offer->title . '_' . $offer->id).'.pdf');
    Ответ написан
  • Laravel 5.4 Validator & Почему фильтрует как попало?

    chelkaz
    @chelkaz Автор вопроса
    Итог: Многие тут начали "орать" смотри в документацию и т. д. Видимо пишут так везде где вопрос сложнее чем 2+2.
    Поэтому может кто столкнется рассказываю. Протестировал с разными драйверами сессий. На станице была гугловская Рекапча! (не подключенная для проверки в валидаторе)
    Так вот, если стоит драйвер сессий - SESSION_DRIVER=cookie И заполнить часть полей неправильно, а потом нажать рекапчу «Я не робот» и послать, то при ошибки редиректит обратно, но с пустым $validator->messages()
    Самое интересное, что сама рекапча как функционал не подключена в системе!!! Важен сам процесс нажатия кнопки, видимо в этот момент она меняет DOM в браузере и как то влияет.
    Если ее не нажимать, то валидатор работает и редиректит правильно!
    Но когда я поменял драйвер на SESSION_DRIVER=database
    То все заработало без ошибок!
    Методом проб, выяснилось, что recaptcha влияет на сессию в браузере Chrome когда в настройках ларавел стоит SESSION_DRIVER=cookie
    Если найдется тот, кто свяжет все это более детально будет здорово!
    Ответ написан
    Комментировать
  • Как в ларавэл вернуть массив айдишек?

    chelkaz
    @chelkaz
    Нужно при вызове модели указать метод with("messages")
    Ticket::with('messages')->get()
    Но счет массива:
    В самой модели можно указать:
    protected $casts = [
            'options' => 'array',
        ];

    Подробно https://laravel.com/docs/5.4/eloquent-mutators#arr...
    Ответ написан
  • Как обработать форму поиска?

    chelkaz
    @chelkaz
    Вы сами все усложнили, вам нужно просто в where передать массив, чекбоксов и все. Например:
    $users = DB::table('users')->where([
    // То есть сюда массив с тем, что там у вас в форме на выбирали при поиске и все.
        ['sex', 'man'],
        ['sex', 'female'],
    ])->get();


    Вот пример для одного поля массив значений, в выше для многих полей. Вам этот пример нужен
    тогда:
    $users = DB::table('users')
    // ['man', 'female'] Это массив с реквеста, тут может быть и null и man и сразу все вместе... и что вам нужно
                        ->whereIn('sex', ['man', 'female'])
                        ->get();
    Ответ написан
    Комментировать
  • Laravel функция route name через https, как сделать во вьюхе?

    chelkaz
    @chelkaz Автор вопроса
    Много в сети костылей и почему то ни кто не пишет о третьем параметре в функции route В функции 3-й параметр по умолчанию true, что говорит учитывать корень url. В данном случае для создания url в форме, нужно добавить третим параметрам false. В итоге во вьюхе выводится url с протоколом по умолчанию страницы.
    Ответ написан
  • Почему функция не возвращает?

    chelkaz
    @chelkaz Автор вопроса
    Ошибка была в первом условии, так как нужно было но просто начинать функцию:
    if($location->DEPTH_LEVEL > 1) // Если не главный родитель то продолжаем
                {
                    $par_ar = DB::table('loc_name')->where('LANGUAGE_ID', 'ru')->where('LOCATION_ID', $parent)->first();
                    get_full_city($par_ar, $full_arr); // Отправляем на следующий круг
                }

    А возвращать через return!
    if($location->DEPTH_LEVEL > 1) // Если не главный родитель то продолжаем
                {
                    $par_ar = DB::table('loc_name')->where('LANGUAGE_ID', 'ru')->where('LOCATION_ID', $parent)->first();
                    return get_full_city($par_ar, $full_arr); // Отправляем на следующий круг
                }
    Ответ написан
    Комментировать
  • Как придумать авто-подчистку таблицы?

    chelkaz
    @chelkaz Автор вопроса
    Почитав доки... В итоге идеальный вариант под фреймворк Laravel без велосипеда бедет:
    $count = DB::table('tbl_name')->where('vid', '=', $vid)->count();
    DB::table('tbl_name')->where('vid', '=', $vid)
         ->orderBy('created_at', 'asc')
         ->skip(500)->take($count-500)
         ->delete();
    Ответ написан
  • Почему в место 404 ошибка 500?

    chelkaz
    @chelkaz Автор вопроса
    Проблема была решена обновлением проекта
    php artisan view:clear
    php artisan cache:clear
    composer update --no-dev --optimize-autoloader
    После чего в лог записалась ошибка отсутствия переменной.
    Ответ написан
    Комментировать
  • Использовать ли Blade такую конструкцию?

    chelkaz
    @chelkaz Автор вопроса
    Не знаю что решение логичнее, но я сделал следующее:
    Для того что бы избежать постоянное обращение к базе за информацией о пользователе и к таблице за фото, я воспользовался:
    $AllQuestions = Question::with('user', 'file')->get();

    В итоге в $AllQuestions формируется массив из 3-х таблиц.
    В модели Question
    Сделал следующее:
    class Question extends Model
    {
        //
        public function user()
        {
            return $this->belongsTo('App\User');
        }
    
        public function file(){
            return $this->hasOne('App\Models\File','user_id','user_id')->where('module_id', 'user_profile');
        }
    }

    И я явно указал для таблицы files поля для связи!
    'user_id','user_id'
    Иначе по умолчанию связи не будет!
    После чего в представление можем передать рабочий массив:
    return view('questions.index', compact('AllQuestions'));
    Запросы уменьшились до 6 вместо почти 70 если например 20 юзеров.
    На мысль навела доку. Eager Loading Multiple Relationships
    Ответ написан
    Комментировать
  • Laravel 5.2 Возможно ли из шаблона BLADE получить мета? (title, keywords)?

    chelkaz
    @chelkaz Автор вопроса
    Наверно лучшим решением будет тогда так:
    Вы также можете передать массив данных во включаемый шаблон:
    @include('view.name', ['some' => 'data'])
    Получается что то типа этого:
    <?php $title = Тут тайтл'; ?>
    @section('title', title)
    @include('view.name', ['title' => 'title'])
    И в секции name мы можем получить наши переменные.
    Это ли не чудо?
    В Битриксе делается так, что довольно удобно. В каждой директории лежит файл .sections.php
    В нем прописываются мета данные.
    По сути такая логика может быть реализована с помощью view()->share()
    То есть до вывода нужной вьюхи, берем данные из нужной .sections.php
    И посылаем через view()->share()
    Второй вариант более удобный в плане обслуживания сео.
    Но не писать мета в контроллере это точно! Потом можно будет сойти с ума в плане обслуживания СЕО
    Кто за и против? Есть другие предложения?
    Ответ написан
    Комментировать