我是Laravel的新手,在用户通过表单注册后尝试发送电子邮件。我正在使用Laravel附带的默认身份验证文件并对其进行了修改。例如:我只想要一个唯一的电子邮件地址进行注册,然后发送凭据并自动登录新用户。
为了将来的目的,我也在处理存储翻译的语言文件。
我已经将AuthController定制为也接受了MailerContract,并且在postRegistration函数中我发送的电子邮件如下:
/**
* Handle a registration request for the application.
*
* @param \Illuminate\Foundation\Http\FormRequest $request
* @return \Illuminate\Http\Response
*/
public function postRegister(Request $request)
{
$validator = $this->registrar->validator($request->all());
if ($validator->fails())
{
$this->throwValidationException(
$request, $validator
);
}
$input = $request->all();
$input['password'] = str_random(8);
$this->auth->login($this->registrar->create($input));
$this->mailer->send('emails.welcome', ['email' => $input['email'], 'password' => $input['password']], function($message) use($input) {
$message->to($input['email'])->subject(trans('emails.welcome:subject'));
});
return redirect($this->redirectPath());
}
我注意到我的主题值没有被翻译。如何在控制器/特征中使用语言文件? Laravel不从视图中选择这个吗?
根据要求,语言文件的一部分:(/resources/lang/nl/emails.php
)
<?php
return [
'welcome:subject' => 'Uw inloggegevens' // Dutch for Your login credentials
];
答案 0 :(得分:1)
您需要在/resources/lang/nl/emails.php中使用多维数组:
return [
'welcome' => [
'subject' => 'Uw inloggegevens',
],
];
在trans函数中使用点符号而不是冒号:
$message->to($input['email'])->subject(trans('emails.welcome.subject'));
答案 1 :(得分:0)
我遇到了本地化的另一件事,并在SO上问了一个问题。似乎使用中间件是解决方案,因为它在应用程序中设置了正确的语言。
感谢@lukasgeiter,答案可以在这里找到:Localization with Laravel5 without domain.com/language/