@Mass1veDit
c#,php

Как передать переменную из 1 функции в другую в контроллере?

Не могу передать переменную из 1 контроллера в другой,

Есть функция для сохранения пользователя

public function store(UserRequest $request, User $user)
{
$user->fill($request->only($user->getFillable()));
$user['balance'] =  100;
$user['avatar'] = Storage::put('avatar',$user['avatar']);
$user->password = Hash::make($request->password);
$user->save();
 
Notification::send($user,new WelcomeNotification);
 
$this->content = view('Admin::User.verify')
    ->with([
        'title'=>$this->title,
    ])
    ->render();
return $this->renderOutPut();
}


Далее идет редирект на страницу blade,где пользователь вводит код подтверждения с помощью телефона

<div class="form-group row">
    <label for="verification_code"
           class="col-md-4 col-form-label text-md-right">{{ __('Phone Number') }}</label>
    <div class="col-md-6">
 
        <input id="code" type="tel"
               class="form-control @error('verification_code') is-invalid @enderror"
               name="verification_code" value="{{ old('verification_code') }}" required>
        @error('verification_code')
        <span class="invalid-feedback" role="alert">
            <strong>{{$message }}</strong>
        </span>
        @enderror
    </div>
</div>

После в методе

public function verify(Request $request)
{
Хочу сделать проверку,если код из бд совпадает с введенным,редиректить,если нет то сообщение об ошибке
if($request->verification_code == $user->code){
 
}
}

Но дело в том что я не могу получить в метод verify значение из бд только что созданного пользователя
пользователь сохраняется в бд с кодом,
$user->save();
с dd можно вывести значение $user->code в функции store,
пробовал глобально сохранять переменную,но в public function verify ничего не поступает.Т.к пользователь уже создался и вывести его не возможно
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ответы на вопрос 1
dlnsk
@dlnsk
ПК Партнер 01.01 -> ПК Поиск -> IBM PC
Вы должны помнить, что когда запускается метод verify - это совершенно новый запуск вашего приложения, никак не связанный с предыдущим, когда выполнялся метод store. В связи с этим запоминание чего бы то нибыло в памяти бесполезно. Каждый запуск приложения Laravel (и любого другого серверного скрипта) - это запуск с чистого листа.
В связи с этим, если вы хотите работать с какой-то информацией (пользователем например), вам нужно ее откуда-то получить. Таким образом если вам нужен пользователь, то вам нужен id пользователя и в verify нужно получить из БД этого пользоателя по id. Ну а дальше сравнивайте что хотите.
Это значит что id вы должны либо передать через форму вместе с verification_code, либо, если он есть в роуте, просто воспользоваться Route Model Binding (как это сделано в store). Короче вам нужно понять откуда взялся $user в store, и тогда вам станет легче, но понять это можно только читая документацию.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы