将对象传递给方法laravel php bundle

时间:2013-05-24 08:59:56

标签: php object parameter-passing laravel laravel-3

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

我正在使用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.' 

        ');
    });

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

希望我说得对。

2 个答案:

答案 0 :(得分: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);
    // ...
}

答案 1 :(得分:0)

$ message instanceof Message?应该将哪些参数传递给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类中有public(非静态)方法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);

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