@Ohjovanni

Как выводить шаблон в mvc?

есть вот такой роутер
namespace Controllers;
class Router
{
    public function run()
    {
       $route = urldecode(parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH));
       $path = [
           "/" => ['controller' => "View", 'action' => 'index'],
           "/task" => ['controller' => "View", 'action' => 'task'],
       ];
       if(isset($path[$route])){
           $controller = 'Controllers\\'.$path[$route]['controller'].'Controller';
           $obj = new $controller();
           $obj->{$path[$route]['action']}();
       } else {
           echo '404';
       }
    }
}

я не имею понятия, каким образом вывести шаблон под эти урлы
мне нужно создать контроллер view? но как вообще мне вызывать мои шаблоны?
  • Вопрос задан
  • 94 просмотра
Решения вопроса 1
@BorisKorobkov Куратор тега PHP
Web developer
Все ваши контроллеры наследуйте от базового контроллера, в котором
protected $title = '';

	/**
	 * @param string $viewName
	 * @param array $params
	 * @return string
	 */
	protected function getViewWithLayout($viewName, array $params = []): string
	{
		$content = $this->getView($viewName, $params);
		return $this->getView('layout', [
			'content' => $content,
			'title' => $this->title,
		]);
	}

	/**
	 * @param string $viewName
	 * @param array $params
	 * @return string
	 */
	protected function getView($viewName, array $params = []): string
	{
		$filePath = sprintf('%s/../view/%s.php', __DIR__, $viewName);
		extract($params, EXTR_SKIP);

		ob_start();
		include $filePath;
		return ob_get_clean();
	}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы