0

可能是一个菜鸟问题,但我们开始了。

我正在使用 laravel 和消息包发送电子邮件以验证用户。但是如何从我的 send 方法中访问我的 $new_user 对象?

    // Get inputdata and insert into table users
    $new_user = User::create(array(
        'username' => Input::get('username'), 
        'email' => Input::get('email'), 
        'password' => Hash::make(Input::get('password')),
        'hash' => hash('sha512', uniqid()) 
    ));

    Message::send(function($message)
    {
        $message->to('blablabla@hotmail.com');
        $message->from($new_user->email, $new_user->username);

        $message->subject('new account');
        $message->body('

            Bedankt voor het registreren!

            Uw account is aangemaakt, u kan inloggen met de volgende gegevens nadat u u account heeft geactiveerd met de url hier beneden.

            ------------------------
            Username: '.$new_user->username.'
            Password: '.$new_user->password.'
            ------------------------

            Klik op deze link om uw account te activeren.

            http://blablabla.dev/verify?email='.$new_user->email.'&hash='.$new_user->hash.' 

        ');
    });

这样做显然不起作用,因为我无权访问该对象。

希望我说得对。

4

2 回答 2

1

你可以在use这里使用关键字

$new_user = User::create(array(
    'username' => Input::get('username'), 
    'email' => Input::get('email'), 
    'password' => Hash::make(Input::get('password')),
    'hash' => hash('sha512', uniqid()) 
));

Message::send(function($message) use ($new_user)
{
    $message->to('blablabla@hotmail.com');
    $message->from($new_user->email, $new_user->username);
    // ...
}
于 2013-05-28T22:54:16.730 回答
0

$message instanceof 消息?以及应该将哪些参数传递给 Message::send()?也许你最好这样做:

$message = new Message;
$message->to('blablabla@hotmail.com');
$message->from($new_user->email, $new_user->username);
$message->subject('new account');
$message->body('...'.$new_user->email.'...');

如果您的 Message 类中有公共(非静态)方法 send(),它看起来像这样:

public function send(){
     @mail($this->to, $this->subject, $this->body, $this->header, $this->params);
}

然后做

$message->send();

否则,如果您的 Message 类中只有静态 send() 方法,并且它定义为

static function send(Message $message){...}

称呼

Message::send($message);

此外,我建议您在将用户输入添加到数据库之前对其进行验证。

于 2013-05-24T09:26:22.930 回答