Laravel视图未找到:邮件视图命名空间配置问题求助
解决Laravel邮件视图找不到的问题
嘿,我看你已经配置了视图命名空间,但邮件发送时还是碰上个"View [BookedMail] not found"的报错,咱们一步步捋清楚问题出在哪:
1. 先把视图加载路径给搞对
你在Provider里写的../Domain/Quotation/views大概率路径不对——Laravel的loadViewsFrom方法如果用相对路径,是基于项目根目录的,不是Provider文件所在的src/Providers目录。
换成绝对路径更靠谱,用Laravel自带的base_path辅助函数来构建:
$this->loadViewsFrom(base_path('src/Domain/Quotation/views'), 'Quotation');
2. 确认视图文件的扩展名
Laravel默认找.blade.php后缀的视图文件,你现在的视图是BookedMail.php,不是标准的blade后缀,这会导致框架找不到它。
要么把文件重命名为BookedMail.blade.php(推荐,符合Laravel规范),要么在调用时加上.php后缀:
Mail::send('Quotation::BookedMail.php', [], function ($message) use ($request) { $message->to($request['email'], '')->subject('Loslijst ' . date('d-m-Y')); });
3. 清一波缓存试试
有时候Laravel会缓存视图路径配置,新注册的命名空间没生效,执行这俩命令清缓存:
php artisan view:clear php artisan config:clear
4. 验证视图命名空间是否真的注册成功
可以临时加个路由,打印所有已注册的视图命名空间,确认你的Quotation命名空间在不在:
Route::get('/check-view-namespaces', function () { dd(View::getFinder()->getNamespaces()); });
访问这个路由,如果能看到Quotation对应的路径是正确的,那命名空间就注册没问题了。
5. 最后检查控制器的use语句
确保你的QuotationController里正确引入了Mail门面:
use Illuminate\Support\Facades\Mail;
别因为类没找到导致间接报错。
按这几步走,应该就能解决视图找不到的问题啦!
内容的提问来源于stack exchange,提问作者Nick Alexander
相关产品推荐
相关产品推荐

