From ac2f6a33656defb4b76a673902b68e0c448996a6 Mon Sep 17 00:00:00 2001 From: Dmitrii Derepko Date: Mon, 24 Jul 2023 08:31:21 +0300 Subject: [PATCH] Improve view function --- README.md | 5 +++-- src/view.php | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 0bd1b45..a09643d 100644 --- a/README.md +++ b/README.md @@ -40,16 +40,17 @@ route('user/view', ['id' => 1]); // => '/user/1' route('site/index', [], ['page' => 2]); // => '/index?page=2' ``` -### `view(string $view, array $params = [], ?object $controller = null): \Yiisoft\DataResponse\DataResponse` +### `view(string $view, array $params = [], null|string|object $controller = null): \Yiisoft\DataResponse\DataResponse` - `$view` is a view name - `$params` is a view params -- `$controller` is a controller instance. Used to bind views to the specific directory called by the controller name. +- `$controller` is a controller instance or a path to views directory. Used to bind views to the specific directory. ```php view('site/index'); // => A response object with content of file '/views/site/index.php' view('site/index', ['page' => 2]); // => A response object with content of file '/views/site/index.php' and params ['page' => 2] view('index', ['page' => 2], new MyController()); // => A response object with content of file '/views/my/index.php' and params ['page' => 2] +view('index', ['user' => $user], 'module/user'); // => A response object with content of file '/views/module/user/index.php' and params ['user' => $user] class SiteController { diff --git a/src/view.php b/src/view.php index 5b7bfa6..5de37bd 100644 --- a/src/view.php +++ b/src/view.php @@ -8,14 +8,16 @@ function view( string $view, array $parameters = [], - ?object $controller = null + null|string|object $controller = null ): DataResponse { /** * @var ViewRenderer $renderer */ $renderer = container(ViewRenderer::class); - if ($controller !== null) { + if (is_object($controller)) { $renderer = $renderer->withController($controller); + } elseif(is_string($controller)) { + $renderer = $renderer->withControllerName($controller); } return $renderer->render($view, $parameters); }