如何向Laravel中的注册用户发送激活链接?

时间:2015-05-22 15:14:18

标签: php email laravel laravel-4 laravel-5

我正在尝试向我的注册用户发送激活链接

这是我的postRegister()功能

public function postRegister(){

    $validator = Validator::make( Input::all(), array(
      'name'           => 'required|min:2|max:20',
      'email'          =>'required|max:50|email|unique:users',
      'username'       =>'required|max:20|min:3|unique:users',
      ));

    if ($validator->fails()) {
      return Redirect::to('/')
      ->with('error_register','Something Wrong')
      ->withErrors($validator)
      ->withInput();
    }



    $user = new User;
    $user->name = Input::get('name');
    $user->username = Input::get('username');
    $user->email = Input::get('email');
    $user->code = str_random(60);
    $user->password = '';
    $user->active = 0;
    $user->type = 'Aveniros';

    $user->save();



    // Email
    Mail::send('emails.activation', array(

      'username'=>$user->username,
      'name'=>$user->name,
      'code'=>$user->code,
      'email'=>$user->email

      ),
    function($message){

      $message->from(env('MAIL_USERNAME'),'Aveniros Site');
      $message->to( $user->email, $user->name )->subject(' Aveniros Site Activation ');

    });

    return Redirect::to('/')
    ->with('success',' Your Account has been created ! <small> Email has been sent to set-password, and activation.</small>');
  }
}

错误

$message->to( $user->email, $user->name )->subject(' Aveniros Site Activation ');

错误

  

未定义的变量:用户

enter image description here

如何使用/调用我的$user变量?

我认为我们可以在$user->save();之后访问它们 - 对吗? 但显然,我不能。如果我错了,请纠正我。

1 个答案:

答案 0 :(得分:0)

我想出了自己的答案,我才意识到我需要添加use ($user)

进入此行function($message) use ($user){

Final Mail :: Sent()应如下所示

// Email
Mail::send('emails.activation', array(

  'username'=>$user->username,
  'name'=>$user->name,
  'code'=>$user->code,
  'email'=>$user->email

  ),
function($message) use ($user){

  $message->from(env('MAIL_USERNAME'),'Aveniros Site');
  $message->to( $user->email, $user->name )->subject(' Aveniros Site Activation ');

});