如何实例化Illuminate \ Contracts \ View \ Factory?

时间:2017-08-22 12:10:18

标签: laravel views blade factory

当我想要实例化Factory时,我收到此错误。我需要实例化,因为有一个方法make()来渲染刀片文件。

  

[Symfony \ Component \ Debug \ Exception \ FatalThrowableError]不能   实例化界面Illuminate \ Contracts \ View \ Factory

源代码

<?php

namespace App\Core;

use Spipu\Html2Pdf\Html2Pdf;
use Spipu\Html2Pdf\Exception\Html2PdfException;
use Spipu\Html2Pdf\Exception\ExceptionFormatter;
use Illuminate\Contracts\View\Factory as ViewFactory;

class PDFGenerator
{

    private $view;

    public function __construct()
    {
        $this->view = new ViewFactory();
        $this->generatePDF();
    }

    public function generatePDF()
    {

        $html = $this->loadView('template');

    public function loadView($view, $data = array(), $mergeData = array(), $encoding = null){
        return $this->view->make($view, $data, $mergeData)->render();
    }
}

1 个答案:

答案 0 :(得分:2)

您似乎对工厂/界面的工作方式存在误解。 接口的一点是你实例化它,你只有方法名称和参数,所以每个实现它的类都有统一的接口。

在这种情况下,如果您查看Illuminate\Contracts\View\Factory,您会发现此处没有真正的处理,只有代码表示&#34;好的,这就是这个方法会做什么,什么它预期的输入和将给出的输出&#34;。你会发现没有提到如何去做,实现该接口的类是那个想知道如何去做的人,而不是接口。

解决您的问题

当您想要渲染视图时,您有2个选项

  1. 使用view() helper function。 (首选)
  2. 使用View::make() Facades
  3. 中的View方法