我正在尝试使用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”时得到的错误:
我有什么需要补充的吗?我已经完成了我的composer.json文件,并将其添加到Providers数组中,并将其发布到资产文件夹中,就像在文档中一样。
答案 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提及的方式进行了安装。如果还没有,请执行此操作。