показывать всплывающее окно только при первом входе пользователя (Laravel) - PullRequest
1 голос
/ 07 апреля 2020

У меня простой вопрос о проекте, над которым я работаю. Мне нужно показать модальное всплывающее окно один раз , когда пользователь входит в систему в первый раз, не более одного раза !!! I создайте этот код, но он все еще не работает

test.blade. php

@if ($first_time_login)
   <h3>Welcome Popup</h3>
@else 
  <h3>Hey! ? Nothing to Show</h3>
@endif

TestController

public function Test()
{

    if (Auth::user()->first_time_login) {
        $first_time_login = true;
        Auth::user()->first_time_login = 1;
        Auth::user()->save();
    } else {
        $first_time_login = false;
    }

    return view(
        'test', 
        ['first_time_login' => $first_time_login]
    ); 
}

2014_10_12_000000_create_users_table. php

    Schema::create('users', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('name')->nullable();
        $table->string('email')->unique()->nullable();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password')->nullable();
        $table->rememberToken()->nullable();
        $table->timestamps();
        $table->string('first_time_login')->default(false);
    });

1 Ответ

1 голос
/ 07 апреля 2020

Я вижу несколько вещей в вашем коде.

Во-первых, вы объявляете поле first_time_login в виде строки, оно должно быть логическим со значением по умолчанию true. Например:

2014_10_12_000000_create_users_table. php

    Schema::create('users', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('name')->nullable();
        $table->string('email')->unique()->nullable();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password')->nullable();
        $table->rememberToken()->nullable();
        $table->timestamps();
        $table->boolean('first_time_login')->default(true);
    });

Еще одна вещь, после проверки того, что это первый вход в систему, вы устанавливаете 1. Это заставит ваше поле остаться как true. Измените его на:

TestController

public function Test()
{

    if (Auth::user()->first_time_login) {
        $first_time_login = true;
        Auth::user()->first_time_login = false;
        Auth::user()->save();
    } else {
        $first_time_login = false;
    }

    return view(
        'test', 
        ['first_time_login' => $first_time_login]
    ); 
}

Это должно сделать это.

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