带参数的Laravel电子邮件模板路由

时间:2018-10-16 08:35:15

标签: php laravel laravel-routing laravel-mail

我使用Laravel创建了一个简单的电子邮件功能,用户收到了一封电子邮件,在该电子邮件中,我想调用下载文件的路由。

我的可邮寄邮件:

class AppSent extends Mailable
{
    use Queueable, SerializesModels;

    public $name = '';

    public function __construct(String $name)
    {
        $this->name = $name;
    }

    public function build()
    {
        return $this->from(env('MAIL_USERNAME'))
                    ->markdown('emails.download.android_app');
    }
}

在按钮上单击,我在DownloadController中调用此函数,该函数会将电子邮件发送给用户:

return Mail::to($request->email)->queue(new AppSent($request->name));

这是用户获得的降价视图(电子邮件视图):

@component('mail::message')
    Hi,

    Downloadlink created

    @component('mail::button', ['url' => 'https://myapp.com/download'])
    Download!

    @endcomponent    
@endcomponent

这是我下载该zip文件时需要调用的途径:

public function download(Request $request)
{
    return response()->download(
        storage_path('/app/uploaded_apps/' . $request->name . '.zip')
    );
}

如何在下载刀片视图中添加参数以下载具有给定名称的特定文件?

2 个答案:

答案 0 :(得分:0)

您可以在url数组中添加参数:

@component('mail::message')
    Hi,

    Downloadlink created

    @component('mail::button', ['url' => 'https://myapp.com/download', 'name' => $name])
    Download!

    @endcomponent    
@endcomponent

答案 1 :(得分:0)

如何创建这样的路线: route.php

Route::get('download/{name}', function($name){
   return response()->download(
        storage_path('/app/uploaded_apps/' . $name . '.zip')
    );
});

您还可以将download函数放入控制器中...让我们将其命名为DownloadController,然后您可以调用它:

Route::get('download/{name}', 'DownloadController@download');

您将需要具有接受$ name作为参数而不是Request请求的下载功能。

然后在邮件刀片中:

 @component('mail::button', ['url' => 'https://myapp.com/download/'.$name])
    Download!
@endcomponent 

希望这可以为您提供帮助。