Перенаправить пользователя для заполнения атрибутов, если ноль - PullRequest
0 голосов
/ 16 октября 2019

Я хочу создать функцию перенаправления в том виде, в каком она есть сейчас, моя текущая функция в контроллере авторизации - если фильм не существует, он перенаправляется на страницу для его создания. Но я хочу изменить это сейчас, так как этот маршрут больше не нужен. Вместо этого мне нужно, чтобы ПОЛЬЗОВАТЕЛЬ не настроил / установил возраст или пол, он перенаправляет их на страницу пользователя /user с новым именем маршрута как user_update

Текущая функция:

private function redirect(): RedirectResponse
{
    if (!$this->user->film()->exists()) {
        return redirect()->route('film_create');
    }
    return redirect()->route('home');
}

модель пользователя: поля задаются как константы с массивом значений в верхней части модели, например, тип пола, возрастной диапазон

 protected $fillable = [
    'id',
    'age',
    'gender',
];

знаете ли вы, как я могу изменитьописанная выше функция для создания оператора IF для проверки, установлены ли эти поля для пользователя или нет, если не перенаправить их на страницу /user?

, у которой возникли проблемы при попытке найти ресурсы о том, как это сделать.

Сейчас я пишу тест для этой функции, но у меня возникли небольшие проблемы с ее выполнением ..

это текущий тест

  /**
 * @test
 * Create mocked user, send them to user page and assert they exists in database
 */
public function it_creates_user_on_redirect()
{
    $email = 'foo@bar.com';
    $this->mockSocialite($email);

    $this->get(route('auth_callback'))
        ->assertLocation(route('film_create'));

    $this->assertDatabaseHas('users', [
        'email' => $email,
    ]);
}

Как мне приступить к модификацииэтот тест, чтобы убедиться, что он охватывает новую функцию? @Saly 3301

Ответы [ 2 ]

0 голосов
/ 16 октября 2019

Должно быть:

private function redirect(): RedirectResponse{
    if (!($this->user->age &&  $this->user->gender)) {
      return redirect()->route('user_update');
    }
    return redirect()->route('home');
}

Только если настроены оба поля, вы будете перенаправлены на «home»

0 голосов
/ 16 октября 2019

Должно быть простым

private function redirect(): RedirectResponse
{
    if ($this->user->age || $this->user->gender) {
      return redirect()->route('home');
    }
    return redirect()->route('user_update');
}

А вот логическая логика в тинкере

>>> NULL || NULL
=> false
>>> 25 || NULL
=> true
>>> NULL || 'female'
=> true
>>> 25 || 'female'
=> true

Надеюсь, это поможет

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