2014-04-01 6 views
5

Newbie a laravel così essere gentile lolInvio di un file con il modulo di e-mail con laravel (localhost)

mio config per mail.php sia corretto e messaggi di posta elettronica vengono ricevuti con successo per gli ingressi di testo a Gmail, ma non è sicuro esattamente come completare l'attività per i file. Gradirei qualche aiuto o link di riferimento.

Grazie in anticipo !!

Codice in routes.php

Route::get('/', function() 
{ 
return View::make('form'); 
}); 

Route::post('/form', function() 
{ 
     $data = ['firstname' => Input::get('firstname'), 'username' =>  Input::get('username'), 'email' => Input::get('email'), 'resume' => Input::get('resume') ]; 

     $rules = array(
      'username' => 'Required|Min:7', 
      'email'  => 'Required|Email', 
      'firstname' => 'Required', 
      'resume' => 'Required' 
     ); 


     $validation = Validator::make(Input::all(), $rules); 

     if ($validation->fails()) 
     { 
      // Validation has failed. 
      return Redirect::to('/')->withInput()->withErrors($validation); 
     } 

     else { 

      Mail::send('emails.welcome', $data, function($message) 
     { 
      $message->to('[email protected]'); 
      $message->subject('Welcome to Laravel'); 
      $message->from('[email protected]'); 


     }); 

     return Redirect::to('/')->withInput()->with('success', 'Thank you for your submission.'); 

     } 
// 
}); 

Codice in form.blade.php

<!doctype html> 
<html lang="en"> 
<head> 
<meta charset="UTF-8"> 
<title>Form</title> 
</head> 
<body> 
@if(Session::has('success')) 
<div class="alert-box success"> 
    <h2>{{ Session::get('success') }}</h2> 
</div> 
@endif 

    {{ Form::open(array('url' => '/form')) }} 
     <p>{{ Form::label('email', 'E-Mail Address');}} <br>{{ Form::email('email', '[email protected]');}}</p> 
     {{ $errors->first('email') }} 

     <p>{{ Form::label('username', 'Username');}} <br> {{Form::text('username');}}</p> 
     {{ $errors->first('username') }} 

     <p>{{ Form::label('firstname', 'First Name');}} <br> {{Form::text('firstname');}}</p> 
     {{ $errors->first('firstname') }} 

     <p>{{ Form::file('resume'); }}</p> 

     <p>{{Form::submit('Send Details');}}</p> 

    {{ Form::close() }} 



</body> 
</html> 

risposta

13

Prima di tutto, siate sicuri di avere il file per accettare il caricamento di file:

{{ Form::open(array('url' => '/form', 'files' => true)) }} 

Dopodiché, puoi fare qualcosa in questo modo:

$input = Input::all(); 
Mail::send('emails.welcome', $data, function($message) use ($input) 
{ 
    $message->to('[email protected]'); 
    $message->subject('Welcome to Laravel'); 
    $message->from('[email protected]'); 
    $message->attach($input['resume']->getRealPath(), array(
     'as' => 'resume.' . $input['resume']->getClientOriginalExtension(), 
     'mime' => $input['resume']->getMimeType()) 
    ); 
}); 

Documentazione: http://laravel.com/docs/requests#files e http://laravel.com/docs/mail#basic-usage

Problemi correlati