【问题标题】:Laravel - how do you inject variables into the password reminder emailLaravel - 你如何将变量注入密码提醒电子邮件
【发布时间】:2013-12-23 13:51:19
【问题描述】:

使用 Laravel 4.1 的新密码代理,有没有办法将一些数据传递给密码提醒视图?具体来说,我希望能够更改密码重置视图的 URL。

看这里:http://laravel.com/api/source-class-Illuminate.Auth.Reminders.PasswordBroker.html#97-118 我不确定它是否足够灵活,可以在不完全扩展此类的情况下接受数据...

【问题讨论】:

  • 你有没有找到一个干净的方法来做到这一点?
  • 我将它添加到 PasswordBroker 文件中并且它可以工作,虽然这确实不是最好的地方,但是我在传递它时遇到了麻烦。 $m->subject('重设密码')->to($user->getReminderEmail());
  • 感谢@Jason。我有点震惊,没有一种干净的方法可以做到这一点。

标签: php laravel laravel-4


【解决方案1】:

不幸的是,searsaw 建议的代码对我不起作用。我想我搞错了。但我找到了下一个解决方案:

    View::composer('emails.auth.reminder', function($view) use ($user) {
        $view->with([
            'first_name'  => $user->first_name,
            'email'       => $user->email,
            'newPassword' => Input::get('new_password'),
            'logo'         => asset('/images/mail/logo.png'),
            'twitter_img'  => asset('/images/mail/btn_twitter_pressed.png'),
            'facebook_img' => asset('/images/mail/btn_fb_pressed.png')
        ]);
    });

我在Password::remind方法之前使用了这段代码

【讨论】:

  • 那么在特定视图上调用 View::composer() 将触发在调用 Password::remind() 并发送该视图时更改视图?
  • 非常感谢这个解决方案。帮了大忙。
【解决方案2】:

我不确定我是否完全明白了这个问题,但是如果你想传递一些额外的数据,你可以在 Laravel 中使用这样的代码: ` $激活 = [];

$activation['email'] = $email;

$activation['subject'] = '一些信息';

Mail::send('emails.auth.activate', $data, function($message) 使用($activation)

{

$message->to($activation['email'])->subject($activation['subject']);

});`

【讨论】:

  • 这是一个简单的电子邮件发送。在这种情况下,我们想将一些数据传递给 Password::remind() 视图。正如@Victor 所说,这是通过 View::composer() 完成的
【解决方案3】:

数组中提供给提醒方法的任何内容都将传递给提醒视图。您可以抽出很多这种逻辑并手动完成所有操作。

$user = Password::getUser(Input::get('email'));

$remind_repo = App::make('Illuminate\Auth\Reminders\ReminderRepositoryInterface');
$token = $remind_repo->create($user);

$data['name'] = 'Forest Gump';
$data['likes'] = ['running', 'chocolates'];
$data['girlfriend'] = 'Jenny';
$data['user'] = $user;
$data['token'] = $token;

Mail::send('email.reminder', $data, function($m) use ($user)
{
    $m->to($user->getReminderEmail());
});

现在您的视图将可以访问 namelikesgirlfriendusertoken

【讨论】:

  • 首先我收到一个错误,即 Password::getUser 需要一个数组作为参数。我改用 User::where 。但后来我收到了这个错误:Target [Illuminate\Auth\Reminders\ReminderRepositoryInterface] is not instantiable。 :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-07
  • 2019-07-14
  • 2019-01-26
  • 2018-12-09
  • 1970-01-01
相关资源
最近更新 更多