2013-05-24 5 views
0

Возможно, вопрос о нобе, но здесь мы идем.Передача объекта методу laravel php bundles

Я использую laravel и комплект сообщений для отправки электронных писем для проверки пользователей. Но как мне получить доступ к моему $ 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('[email protected]'); 
     $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.' 

     '); 
    }); 

Выполнение этого, очевидно, не работает, так как у меня нет доступа к объекту.

Надеюсь, я сформулировал это право.

ответ

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('[email protected]'); 
    $message->from($new_user->email, $new_user->username); 
    // ... 
} 
0

$ message instanceof Сообщение? и какие параметры должны быть переданы в Message :: send()? Может быть вам лучше сделать это:

$message = new Message; 
$message->to('[email protected]'); 
$message->from($new_user->email, $new_user->username); 
$message->subject('new account'); 
$message->body('...'.$new_user->email.'...'); 

Если у вас есть публичный (не статический) отправить метод() в классе сообщений, и это выглядит следующим образом:

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

Затем сделайте

$message->send(); 

в противном случае, если у вас есть только статическая Send() метод в классе сообщений, и она определяется как

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

вызов

Message::send($message); 

Также я рекомендую вам проверить пользовательский ввод перед добавлением его в базу данных.

Смежные вопросы