Laravel Email Verification в пользовательском контроллере регистрации не работает - PullRequest
0 голосов
/ 31 марта 2019

Я сделал регистрационную форму в своем интерфейсе (не регистрационная форма по умолчанию). Я использовал Laravel Email Verification

У меня есть MustVerifyEmail в пользовательской модели

Но в этой пользовательской форме регистрации в моем веб-интерфейсе, когда я нажимаю кнопку отправить, она перенаправляет страницу в / admin / home, но при регистрации я не отправляю электронное письмо, но если я снова нажму на повторную отправку, оно отправит электронное письмо. Я хочу это исправить Кто-нибудь знает как? Должен ли я реализовать MustVerifyEmail для этого контроллера тоже или что?

ИГНОРИРУЙТЕ, ЧТО ГОРОД И КОМНАТА В ФУНКЦИИ !!!!!

class QuickRegisterController extends Controller

{

public function quickList(Request $request)
{
  $this->validate($request ,[
    'features' => 'required',
    'rommies' => 'required',
    'price' => 'required',
    'avaiability' => 'required',
    'utility' => 'required',
    'owner_working_email' => 'required',
    'address' => 'required',
    'exact_address' => 'required',
    'owner_of_the_room' => 'required',
  ]);

    $user = User::firstOrCreate([
        'name' => $request->owner_of_the_room,
        'email' => $request->owner_working_email,
        'password' => bcrypt($request->password),
        'role_id' => config('quickadmin.default_role_id'),
    ]);
    \Auth::loginUsingId($user->id);
    if (\Auth::check()) {
        $city = TotalCity::firstOrCreate([
            'name' => $request->city,
            'created_by_id' => \Auth::user()->id,
        ]);

        if ($city) {
            $room = new MyRoom;
        $room->location_id = $city->id;
        $room->features = $request->features;
        $room->rommies = $request->rommies;
        $room->price = $request->price;
        $room->utility = $request->utility;
        $room->avaiability = $request->avaiability;
        $room->owner_woring_email = $request->owner_working_email;
        $room->address = $request->address;
        $room->exact_address = $request->exact_address;
        $room->owner_of_the_room = $request->owner_of_the_room;

        $room->save();
        }

        return redirect('/admin/home');
    }
    else {
        return redirect()->back()->with('Form Submission Failed . Try Again Later');
    }
}

}

1 Ответ

0 голосов
/ 31 марта 2019

Если вы загляните в RegisterController, который Laravel предоставляет со своей платформой аутентификации, не уверенный, используете ли вы это или нет, он реализует черту RegistersUsers.Эта черта реализует событие, которое срабатывает при регистрации.Вы можете использовать черту RegistersUsers в своем классе или создать собственное событие.

Я покажу вам, как использовать эту черту.

В верхней части вашего файла:

use Illuminate\Foundation\Auth\RegistersUsers;

Прямо внутри вашего класса:

use RegistersUsers;

Например:

use Illuminate\Foundation\Auth\RegistersUsers;

class QuickRegisterController extends Controller
{
    use RegistersUsers;

    // ....
}

Вам также необходимо настроить маршрут.

// The register method is coming from the trait
Route::post('/register', 'QuickRegisterController@register');

Кроме того,

Вы захотите обновить имя метода для создания, черта вызывает метод create от разработчика, где пользователь создается, а затем запускается событие, и в этом процессе созданияметод просто возвращает нового пользователя вместо перенаправления назад.

Возможно, это не все, что вам нужно сделать, чтобы это заработало, но это поможет вам начать работу.Если вы заинтересованы в создании собственного события:

https://laravel.com/docs/5.8/events

Или, как указал @Bipin Regmi, вы можете просто использовать событие, которое используется в черте

event(new \Illuminate\Auth\Events\Registered($user = $this->create($request->all())));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...