2014-04-01 10 views
5

początkujących do laravel więc rodzaj lolWysyłanie pliku za pośrednictwem formularza e-mail z laravel (localhost)

Mój config dla mail.php jest poprawna i e-maile są odbierane z powodzeniem wejść tekstowych do Gmaila, ale nie do końca pewny jak ukończyć zadanie dla plików. Byłbym wdzięczny za pomoc lub linki referencyjne.

Z góry dziękuję !!

kod w 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.'); 

     } 
// 
}); 

kodeksu w 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> 

Odpowiedz

13

Po pierwsze, należy pamiętać, aby umożliwić plik zaakceptować przesyłanie plików:

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

Po tym można zrobić coś na wzór:

$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()) 
    ); 
}); 

Dokumentacja: http://laravel.com/docs/requests#files i http://laravel.com/docs/mail#basic-usage

Powiązane problemy