You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular+Laravel表单提交报错:数组转字符串转换失败

问题解决:Laravel邮件中数组转字符串错误

错误原因

你遇到的 Array to string conversion 错误,核心原因是:前端传递的services是数组类型,但在Blade邮件模板中直接用{{ $services }}输出时,Blade的双大括号语法会自动尝试将变量转为字符串,数组无法直接转为字符串,因此触发报错。

解决方案

以下两种方法任选其一即可解决问题:

方法1:在邮件类中将数组转为字符串

修改Quotation.php的build方法,用implode()把数组转为逗号分隔的字符串后再传递给模板:

public function build(Request $request)
{
    // 将服务数组转为逗号分隔的字符串
    $servicesText = implode(', ', $request->services);
    
    return $this->markdown('emails.angular')->with([
        'name' => $request->name,
        'email' => $request->email,
        'phone' => $request->phone,
        'message' => $request->message,
        'services' => $servicesText
    ]);
}

方法2:在邮件模板中直接处理数组

保持Quotation.php不变,修改email.blade.php模板,在输出时直接将数组转为字符串:

@component('mail::message')
# A New Quotation Received
 
@component('mail::table')

| Details:       |               |                |
| :------------- |:-------------:| --------------:|
| Email          |               | {{ $email }}   |
| Name           |               | {{ $name }}    |
| Phone          |               | {{ $phone }}   |
| Message        |               | {{ $message }} |
| Services       |               | {{ implode(', ', $services) }} |

@endcomponent

如果希望服务列表换行展示,也可以用循环输出:

@component('mail::message')
# A New Quotation Received
 
@component('mail::table')

| Details:       |               |                |
| :------------- |:-------------:| --------------:|
| Email          |               | {{ $email }}   |
| Name           |               | {{ $name }}    |
| Phone          |               | {{ $phone }}   |
| Message        |               | {{ $message }} |
| Services       |               | @foreach($services as $service){{ $service }}<br>@endforeach |

@endcomponent

额外修正点

你的Laravel控制器代码中有一处小问题:$request->all应该改为$request->all()(加括号),否则返回的是方法对象而非请求数据:

public function submit(Request $request) {
    Mail::to($request->email)->send(new Quotation($request));
    return response()->json($request->all(), 200); // 修正all为all()
}

内容的提问来源于stack exchange,提问作者Muhammad Shahzaib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 01:35:36