Как засунуть ссылку на файл, который будет отображаться через контроллер?

Рейтинг: 0Ответов: 1Опубликовано: 28.02.2023
<?php

declare(strict_types=1);

namespace ilari\App\Controller;

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Laminas\Diactoros\Response;

class HomeController
{
    public function __invoke(ServerRequestInterface $request): ResponseInterface
    {
        $response = new Response();
        $response->getBody()->write("<h1>Hello World!</h1>");
        return $response;
    }

}

меня интересует вот эта строка:

$response->getBody()->write("<h1>Hello World!</h1>");

как в неё поместить ссылку на файл, к примеру index.php, раньше писал не ООП код, и писал вот так:

<?php include 'assets/views/nav-bar.php'; ?>

Ответы

▲ 0

Есть документация по include Вы можете подключить его в теле метода, если у вас там процедурный код без функций и классов. Если у вас там echo, то можно вывести это в буфер обмена и занести в переменную

ob_start();

include 'assets/views/nav-bar.php'; //здесь можно накосячить с путями, не рекомендую

$out = ob_get_clean();
$response->getBody()->write($out);

но по хорошему, Вам надо переделать assets/views/nav-bar.php в класс, один из методов которого возвращает вам необходимые данные и подключить его

use assets\views\NavBarClass

$navBar = new NavBarClass();
$response->getBody()->write($navBar->getBody);