【问题标题】:Laravel 5.6 - Using @foreach in a markdownLaravel 5.6 - 在降价中使用 @foreach
【发布时间】:2018-12-11 13:06:45
【问题描述】:

我尝试在 Markdown 模板中呈现 @foreach 循环。但我不让它工作。我找到了这个Laravel- use @foreach in markdown mail,但并没有让我走得更远。

我研究了 Laravel 文档,但似乎找不到我的问题。

我尝试使用供应商表中的所有信息生成一封邮件。因此我使用了供应商类。

也许有人可以睁开我的眼睛,或者可以给我一个正确方向的提示。

路线:

Route::get('/mail',function(){

  $suppliers = App\ModelSupplier\Supplier::all();
  return new App\Mail\Supplier\Certificates($suppliers);
});

邮件类:

namespace App\Mail\Supplier;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;

 use App\ModelSupplier\Supplier;

class Certificates extends Mailable
{
 use Queueable, SerializesModels;

 public $supplier;

public function __construct(Supplier $supplier)
    {
    //
    $this->supplier = $supplier;

    }

public function build()
   {

        return $this->markdown('email.supplier.test');
    }
}

Markdown-文件:

# Certificate:
@component('mail::table')
|No. | Company | Address
|:--------|:--------|----------:

@foreach($supplier as $detail)
| {{$detail->no}} | {{$detail->company}} | {{$detail->address}}
@endforeach
@endcomponent

我收到此错误:

 Argument 1 passed to App\Mail\Supplier\Certificates::__construct() 
 must be an instance of App\ModelSupplier\Supplier, instance of 
 Illuminate\Database\Eloquent\Collection given, called in C:\xampp\htdocs  
 \pps\routes\mail.php on line 7

我完全错了吗?

提前谢谢你。

【问题讨论】:

  • @foreach 仅适用于刀片模板。这与 laravel 无关。

标签: php foreach markdown laravel-5.6


【解决方案1】:

好的!这似乎是 Mail-Class 中的解决方案:

public function build()
{

    $suppliers = Supplier::all();

    return $this->markdown('email.supplier.certificates')->with(['suppliers'=>$suppliers]);
}

但我仍然愿意寻求更好的解决方案!

【讨论】:

  • 正是 .. 当您调用视图时,您应该传递所有使用的数据
【解决方案2】:

您希望构造函数中有一个供应商,但在初始化它时却给了它供应商的集合。

public function __construct(Supplier $supplier)
{
    $this->supplier = $supplier;
}

但是,它应该是这样的:

use Illuminate\Database\Eloquent\Collection;

class Certificates extends Mailable
{
    public $suppliers;

    public function __construct(Collection $suppliers)
    {
        $this->suppliers = $suppliers;
    }

    public function build()
    {
        return $this->markdown('email.supplier.test');
    }
}

【讨论】:

  • @T.Gerste Np,你能把我的答案标记为正确吗?
猜你喜欢
  • 2018-07-10
  • 2019-02-04
  • 1970-01-01
  • 2019-02-28
  • 2018-09-27
  • 1970-01-01
  • 2020-11-09
  • 1970-01-01
  • 2020-12-03
相关资源
最近更新 更多