不能让Beautymail为Laravel 5.2工作

时间:2016-04-20 02:26:19

标签: php email laravel laravel-5.2

我正在尝试使用Beautymail 为我的项目在客户订购产品后发送收据。问题是我在一个函数中使用Beautymail而不是像文档状态那样的路径。

这是我在我的函数中使用它的方式:

 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('example@admin.com')
                ->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');

    }

}

这是我在“Checkout”时得到的错误:

My error

我有什么需要补充的吗?我已经完成了我的composer.json文件,并将其添加到Providers数组中,并将其发布到资产文件夹中,就像在文档中一样。

2 个答案:

答案 0 :(得分:6)

\

请注意Snowfire\Beautymail\Beautymail::class之前的use Snowfire\Beautymail\Beautymail;

或者,在控制器的顶部:

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

在您的方法中,您可以让Laravel通过IoC容器自动解析它,例如:

use

PHP中名称空间的额外信息:

当您引用app()->make(Snowfire\Beautymail\Beautymail::class); 之外的类时,您需要声明您的类在全局命名空间中的位置。所以当你有:

\

没有前导\App\Http\Controllers,PHP会假设你正在寻找当前命名空间中的请求,对你而言\

通过添加前导{{1}},您告诉PHP您的类的路径是相对于全局命名空间的。

以下是更多信息:http://php.net/manual/en/language.namespaces.basics.php

答案 1 :(得分:0)

您的Laravel项目中似乎缺少Snowfire\Beautymail\Beautymail::class。您是否按照https://github.com/Snowfire/Beautymail提及的方式进行了安装。如果还没有,请执行此操作。