传递给Slim \ Views \ Twig :: createLoader()的参数1必须为数组类型,给定null

时间:2020-02-23 07:37:48

标签: php twig slim-3

尝试使用Slim Framework + Doctrine中的Full Example。我正在尝试将Twig(slim / twig-view)添加到混合中。

添加了src / Providers / Twig

<?php

declare(strict_types=1);

namespace App\Provider;

use Pimple\{Container, ServiceProviderInterface};
use Slim\{Http\Environment, Http\Uri, Views\TwigExtension};

class Twig implements ServiceProviderInterface
{
    public function register(Container $c)
    {
        $c[\Slim\Views\Twig::class] = function ($c) {
            $view = new \Slim\Views\Twig(['settings']['view']['template_path'], ['settings']['view'] 
            ['twig']);

            // Instantiate and add Slim specific extension
            $router = $c('router');
            $uri = Uri::createFromEnvironment(new Environment($_SERVER));
            $view->addExtension(new TwigExtension($router, $uri));

            return $view;
        };
    }
}

添加了src / Action / HomeAction

<?php

declare(strict_types=1);

namespace App\Action;

use Slim\{Http, Views\Twig};

class Home
{
    private $view;

    public function __construct(Twig $view)
    {
        $this->view = $view;
    }

    public function __invoke(Http\Request $request, Http\Response $response, $args)
    {
       $result = $this->view->render($response,'index.twig', $data);

        return $response;
    }
}

将此添加到src / Provider / Slim

$c[Home::class] = function (Container $c): Home {
        return new Home($c[\Slim\Views\Twig::class]);
    };

我觉得问题就在这里,但我仍在学习中。

0 个答案:

没有答案