首页 > 解决方案 > 根据 Laravel 中的下拉选择发送电子邮件

问题描述

我是 Laravel 的新手,并试图弄清楚如何根据下拉选择向某人发送电子邮件。我正在使用 Laravel 7。我将在下面解释我的场景:

在注册时,我通过从数据库中检索特许经营权并将特许经营 ID 保存在用户表中,为用户提供了一个选择特许经营权的选项。成功注册后,我想向属于所选特许经营权的电子邮件地址发送一封电子邮件,以便他们批准用户。

目前它被设置为将电子邮件发送给主站点管理员,这不是我想要的。

这是我的注册功能:

protected function create(array $data)
    {   
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
            'franchise_id' => $data['franchise_id'],
        ])->assignRole('User');

        $admin = User::where('Admin', 1)->first();
        if ($admin) {
            $admin->notify(new NewParentRegistration($user));
        }

    return $user;
    } 

这是我的刀片文件中用于在注册时选择特许经营权的下拉选项:

<div class="form-group row">
                            <label for="franchise" class="col-md-4 col-form-label text-md-right">Choose your Franchise</label>

                            <div class="col-md-6">
                                <select name="franchise_id" id="franchise" class="form-control">
                                    @foreach ($franchises as $franchise)
                                        <option value="{{ $franchise->id }}">{{ $franchise->franchise_name }}</option>
                                    @endforeach
                                </select>

                                @error('name')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div> 

我要触发的电子邮件地址位于我的特许经营表中,该表有一个特许经营电子邮件列。

那么如何修改下面的代码来获取注册页面上所选特许经营权的电子邮件地址?

$admin = User::where('Admin', 1)->first();
        if ($admin) {
            $admin->notify(new NewParentRegistration($user));
        } 

标签: laravellaravel-7

解决方案


如果您的Franchise模型email在数据库中定义了列,您可以将电子邮件直接发送到Franchise.

protected function create(array $data)
{
    return User::create([
        'name'          => $data['name'],
        'email'         => $data['email'],
        'password'      => Hash::make($data['password']),
        'franchise_id'  => $data['franchise_id'],
    ])->assignRole('User');

    $franchise = Franchise::find($data['franchise_id']);
    // Notify the franchise...
    $franchise->notify(new NewParentRegistration($user));

    return $user;
}

别忘了——为了让它起作用,你还必须在 Franchise 模型中使用 Notifiable trait 。


推荐阅读