Регистрация PHP-View Slim в PHP-DI6

Я пытаюсь одновременно изучить фреймворк Slim и PHP-DI. Я не хочу, чтобы люди писали мой код за меня, но я здесь в полном застое. Все, что я хочу сделать, это выяснить, как передать объект Slim PHP-View в класс контроллера, используя Slim Bridge PHP-DI. Оттуда я буду возиться и разбираться во всем. Но я даже не могу заставить это работать. Я думаю, что учебник Codecourse, который я смотрел, возможно, устарел, потому что он тоже не работает, и он использовал Twig для загрузки, чего я бы предпочел пока избегать, так как это просто еще один вещь, которую я должен изучить... Любая помощь была бы БОЛЬШИМ образом оценена.


person ConleeC    schedule 16.05.2018    source источник
comment
Пробовали ли вы тонкий мост PHP-DI? Также прочтите руководство по PHP-DI Slim 3.   -  person odan    schedule 16.05.2018
comment
Да, я добавил зависимости PHP-DI Slim Bridge через Composer, но я не могу адаптировать ни одно из руководств, чтобы позволить мне внедрить PHP-View Slim в класс контроллера. Я близко:   -  person ConleeC    schedule 16.05.2018
comment
` class App extends \DI\Bridge\Slim\App { protected function configureContainer(ContainerBuilder $builder) { //$builder-›addDefinitions(DIR.'/config/di-container.php') ; $definitions = [ \Slim\Views\PhpRenderer::class =› function(ContainerInterface $container) { $view = new \Slim\Views\PhpRenderer(DIR . '\..\resources\views '); вернуть $ представление; } , ]; $builder-›addDefinitions($definitions); } }`   -  person ConleeC    schedule 16.05.2018
comment
Извините, не могу понять, как сделать блок кода в комментариях...   -  person ConleeC    schedule 16.05.2018
comment
Отредактируйте свой вопрос с кодом, который вы публикуете в комментарии.   -  person Zamrony P. Juhara    schedule 17.05.2018


Ответы (1)


Тонкие компоненты настроены с поставщиками услуг Pimple, они не будут работать с PHP-DI. Если вы хотите использовать Twig, вам нужно создать его вручную (см. документацию Twig).

Вот пример:

return [
    Twig_Environment::class => function () {
        $loader = new Twig_Loader_Filesystem('/path/to/templates');
        return new Twig_Environment($loader, [
            'cache' => '/path/to/compilation_cache',
        ]);
    },
];

Затем вы можете внедрить класс Twig_Environment.

Вот более общий/настраиваемый пример: https://github.com/stratifyphp/twig-module/blob/master/res/config/config.php

person Matthieu Napoli    schedule 16.05.2018
comment
Спасибо, но я хочу использовать PHP-View. Я уже пытаюсь выучить две новые вещи, пока не хочу добавлять Twig в список. Я упомянул Twig только потому, что в учебнике, который я смотрел о Slim PHP-DI Bridge, использовался Twig, и я пытался изменить его, чтобы вместо этого использовать компонент PHP-View. - person ConleeC; 16.05.2018
comment
Вы говорите, что нет никакого способа использовать компонент Slim PHP-View с PHP-DI? Если да, то я переключаю передачи, я думаю. - person ConleeC; 16.05.2018
comment
Только что увидел, что ты пришел сюда из Gitter Chat. Большое спасибо. Теперь я понимаю, что компонент PHP-View не будет работать с PHP-DI, поэтому начинаю смиряться с тем, что мне нужно использовать другой механизм шаблонов. :) Поиграю с этим сегодня, так как я сижу в составе жюри в здании суда Лос-Анджелеса. :) - person ConleeC; 16.05.2018
comment
@ConleeC Я не понимаю, почему вы сделали вывод, что PHP-View не может работать с PHP-DI. PHP-View не предполагает ничего, кроме того, что для работы требуется Psr\Http\Message\ResponseInterface. Таким образом, пример с Twig, я думаю, также будет работать с Php-View. Вам просто нужно ввести PhpRenderer class. - person Zamrony P. Juhara; 17.05.2018
comment
Также AFAIK Slim view использует Twig, верно? Компонент представляет собой предварительно настроенный экземпляр Twig, который можно настроить вручную с помощью нескольких строк кода, как показано выше. - person Matthieu Napoli; 18.05.2018