Laravel: условно визуализировать модал в зависимости от значения cookie - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь отобразить (или нет) модальный бюллетень в зависимости от того, установлен cookie или нет, по какой-то причине $ show_modal всегда возвращает false.

Контроллер главной страницы:

public function inicio()
    {

        $show_modal = Modal::checkIfShowModal();

        //dd($show_modal);
        
        return view('inicio.index', compact( 'show_modal'));
    }

Это мой метод проверки, показывать или нет модальный режим:

Modal.php

public static function checkIfShowModal(){


        $modal = Modal::first();
        
        if($modal->isActive && Cookie::get('cookie_modal_1') !== false)
        {
            //cookie is set, don't show modal
            return false;
        }
        else if($modal->isActive && Cookie::get('cookie_modal_1') == true){
            //cookie isn't set, show modal then
            Cookie::queue( Cookie::make('cookie_modal_1', true, 60*24*7));
            return true;
        }



    }

Внутри моего шаблона лезвия я использую условное отображение модального рендера

@if($show_modal == true)
    @include('partials/modals/modal_fir')
@endif

Модальные миграции:

Schema::create('modals', function (Blueprint $table) {
            $table->increments('id');
            $table->longText('body');
            $table->boolean('isActive')->default(false);
            $table->timestamps();
        });
        //FILL MODALS TABLE WITH ONE MODAL
        DB::table('modals')->insert([
            'body' => 'Subscribete a nuestro boletín noticiario, recibe ofertas, noticias, eventos y articulos de nosotros',
            'isActive' => true,
        ]);

Любая идея, почему модал никогда не появляется

1 Ответ

0 голосов
/ 22 октября 2018

Вам не нужно делать строгое сравнение в Modal.php.Попробуйте это:

public static function checkIfShowModal(){

        $modal = Modal::first();
        //use != instead of !==
        if($modal->isActive && Cookie::get('cookie_modal_1') != false)
        {
            //cookie is set, don't show modal
            return false;
        }
        else if($modal->isActive && Cookie::get('cookie_modal_1') == true){
            //cookie isn't set, show modal then
            Cookie::queue( Cookie::make('cookie_modal_1', true, 60*24*7));
            return true;
        }
       //return default response, true or false (according to preference)
       return true;

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...