2016-04-20 5 views
3

Ich versuche Beautymail für mein Projekt zu verwenden, um eine Quittung zu senden, nachdem ein Kunde etwas bestellt. Das Problem ist, dass ich Beautymail in einer Funktion nicht in einer Route wie ihre Dokumentation verwendet.Cant bekommen Beautymail für Laravel 5.2

Dies ist, wie im es in meiner Funktion:

class OrderController extends Controller { 



    public function postOrder(Request $request) { 

     // More stuff here, shortned for question purposes 

     // Get an instance of the currently authenticated user 
     $user = Auth::user(); 


     // Send email conformation to user that just bought a product or products. 
     $beautymail = app()->make(Snowfire\Beautymail\Beautymail::class); 
     $beautymail->send('emails.welcome', [], function($message) { 
      $message 
       ->from('[email protected]') 
       ->to($user->email, $user->username) 
       ->subject('Your Receipt'); 
     }); 


     // Then return redirect back with success message 
     flash()->success('Success', 'Your order was processed successfully. A receipt has been emailed to you'); 

     return redirect()->route('cart'); 

    } 

} 

und das ist der Fehler, den ich bekomme, wenn ich „Zur Kasse“:

My error

Gibt es etwas, was ich hinzufügen ? Ich habe meine composer.json-Datei bereits zusammen mit dem Hinzufügen in das Provider-Array und der Veröffentlichung im Ordner "Assets" wie in der Dokumentation erstellt.

Antwort

3
$beautymail = app()->make(\Snowfire\Beautymail\Beautymail::class); 

Hinweis der \ vor Snowfire\Beautymail\Beautymail::class.

Oder an der Spitze des Controllers:

use Snowfire\Beautymail\Beautymail; 

und in Ihrer Methode können Sie Laravel automatisch durch den Behälter IoC lösen, wie:

public function postOrder(Request $request, Beautymail $beautymail) 
{ 
    $beautymail->send('emails.welcome', [], function($message) { 
    // etc... 
} 

Zusätzliche Informationen über Namespaces in PHP:

Wenn Sie eine Klasse außerhalb von use referenzieren, müssen Sie angeben, wo th e wenn Ihre Klasse im globalen Namensraum ist oder nicht. Also, wenn Sie hatte:

app()->make(Snowfire\Beautymail\Beautymail::class); 

ohne das führende \, wird PHP übernehmen Sie suchen für die angeforderte mit in den aktuellen Namensraum, der für Sie \App\Http\Controllers ist.

Durch Hinzufügen der führenden \ sagen Sie PHP, dass der Pfad zu Ihrer Klasse relativ zum globalen Namespace ist.

Hier weitere Informationen: http://php.net/manual/en/language.namespaces.basics.php

+0

Ja Danke, und ja, ich habe den führenden Schrägstrich vergessen – David

+2

Froh, dass Sie es aussortiert haben. Es ist leicht, die kleinen (aber oft wichtigen) Dinge zu verpassen! – tptcat

0

Es scheint, als ob Snowfire\Beautymail\Beautymail::class in Ihrem Laravel-Projekt fehlt. Haben Sie installiert, wie es auf https://github.com/Snowfire/Beautymail erwähnt Wenn Sie nicht haben, tun Sie es bitte.

+0

Er erwähnt er die Anweisungen in der Dokumentation folgen. – tptcat

+0

Ich habe es zur Arbeit – David