【问题标题】:How to pass a collection to mailable laravel如何将集合传递给可邮寄的 laravel
【发布时间】:2019-10-02 22:59:42
【问题描述】:

如何发送可邮寄的集合并在视图中组织我在对象内的集合中创建的项目?

在我的控制器中,我正在创建这样的订单:

$order = Order::create([
            'products' => json_encode(new CartItemCollection($items)),
            'price' => $PartialPrice,
            //other stuff
        ]);

在我的购买功能中,我发送这样的电子邮件:

            $pro = $order->products;
            $data = [
                'extra_address' => $order->extra_address,
                'address' => $order->address,
            ];

            Mail::to($check_user->email)->send(new NewPurch($data, $pro));

在我的电子邮件配置中,我有这个:

public $data;
public $pro;

public function __construct($data,$pro)
{
    $this->data = $data;
    $this->pro = $pro;
}


public function build()
{
    return $this->markdown('newpurch')->with(['data' => $this->data])->subject('Thank you');
}

在视图中,我收到了数据,但我不知道如何访问每一个

@component('mail::message')

Someone want this:

{{$pro}}

@endcomponent

电子邮件如下所示:

但我不能作为对象 $pro->id 或作为密钥 $pro['id'] 访问

编辑: 如果我试试这个:

@component('mail::message')

Someone want this:

@foreach($pro->items as $item)
  {{ $item->id }}
@endforeach

@endcomponent

得到这个错误:

试图获取非对象的属性“项目”(查看:/app/resources/views/newpurch.blade.php)

如果我试试这个:

 @component('mail::message')

<?php
$deco = json_decode($pro,true);
?>
Someone want this:
  {{ $deco }}

@endcomponent

得到这个错误:

htmlspecialchars() 期望参数 1 是字符串,给定数组(查看:/app/resources/views/newpurch.blade.php)

【问题讨论】:

    标签: php laravel email


    【解决方案1】:

    编辑:

    public $data;
    public $pro;
    
    public function __construct($data, $pro)
    {
        $this->data = $data;
        $this->pro = json_decode($pro, true);
    }
    
    
    public function build()
    {
        return $this->markdown('newpurch')->with(['data' => $this->data])->subject('Thank you');
    }
    

    并使用 foreach,因为我们现在回到了集合而不是字符串。

    @foreach($pro->items as $item)
      {{ $item->id }}
    @endforeach
    
    

    【讨论】:

    • 除非模型设置为将products 转换为集合,否则它将是一个字符串。如果是字符串,首先需要将其json_decode成数组或对象,然后进行迭代。
    • 显然我可能是错的,但这是我看到的:在create() 语句中,products 被设置为集合(字符串)的 json_encoded 表示。然后,你有$pro = $order-&gt;products;,所以现在$pro 是字符串。这被传递到 NewPurch 构造函数中,该构造函数设置公共 $pro 属性(仍然是一个字符串)。然后在视图中使用这个公共属性(仍然是一个字符串)。如果存在将其转换回集合的隐藏代码,或者模型上设置了显式 $casts 以将 products 转换为 collection,则它只能是视图中的集合。
    • 已经尝试过这个,我得到这个错误:尝试获取非对象的属性“项目”(视图:/app/resources/views/newpurch.blade.php),我确实认为是因为编码,但不知道json_decode在哪里
    • 只需编辑原始问题并提供更多信息,谢谢大家
    • @patricus 我什至没有看到他在解析。我认为 pro 是模型集合本身。我会更新我的答案。
    猜你喜欢
    • 2021-03-15
    • 1970-01-01
    • 2018-09-24
    • 2020-06-17
    • 2017-06-19
    • 2021-06-16
    • 2020-09-22
    • 2018-12-22
    • 1970-01-01
    相关资源
    最近更新 更多