Getting or setting Page layout
Page::layout( [ string $layout ] ): Page|string
Page::setLayout( string $layout ): Page
Page::getLayout(): string
These methods can be used to get or set the layout used to render a Page object. There are separate setter and getter methods, as well as a combined setter/getter method Page::layout() — though it doesn't matter which method you use, using the combined getter/setter may result in less readable code.
Example
Use with combined getter/setter method:
The layout for current page is "<?= $page->layout() ?>".
<?= $page->layout('another-layout')->render() ?>
Example use with dedicated getter/setter methods:
The layout for current page is "<?= $page->getLayout() ?>".
<?= $page->setLayout('another-layout')->render() ?>
Getting or setting Page view
Page::view( [ string $view ] ): Page|string
Page::setView( string $view ): Page
Page::getView(): string
These methods work exactly like their layout counterparts: they can be used to get or set the view used to render a specific Page object.
Example
Example use with combined getter/setter method:
The view for current page is "<?= $page->view() ?>".
<?= $page->view('json')->render() ?>
Example use with dedicated getter/setter methods:
The view for current page is "<?= $page->getView() ?>".
<?= $page->setView('json')->render() ?>
As of Wireframe 0.16.0 it's possible to use the setter method as a shortcut for defining both view and view template at the same time. These two are functionally equal:
<?= $page->setViewTemplate('home')->setView('json')->render() ?>
<?= $page->setView('home/json')->render() ?>
Getting or setting Page view template
Page::viewTemplate( [ string $template ] ): Page|string
Page::setViewTemplate( string $template ): Page
Page::getViewTemplate(): string
Added in Wireframe 0.9.0.
These methods can be used to instruct Wireframe to look for view files under a specific template when rendering a Page object. Just for an example: for a page using template "contact" the default view would usually be /site/templates/views/contact/default.php, but if you use this method before rendering the page, you can instruct Wireframe to swap the template directory (in this example contact) with something else.
Note: "view template" is not a real ProcessWire concept, but rather a term used internally by Wireframe; think of it like "a template used to view a page".
Example
Example use with combined getter/setter method:
The view template for current page is "<?= $page->viewTemplate() ?>".
<?= $page->viewTemplate('home')->render() ?>
Example use with dedicated getter/setter methods:
The view template for current page is "<?= $page->getViewtemplate() ?>".
<?= $page->setViewTemplate('home')->render() ?>
Getting or setting Page controller
Page::setController( string|Controller|null $controller ): Page
Page::getController(): Controller|null
Added in Wireframe 0.12.0.
These methods can be used to set or get the Controller class for rendering a Page object. Setter method accepts a name of the controller template ("home" for '"HomeController", "basic-page" for "BasicPageController", etc.), a previously instantiated Controller object, or null (for unsetting the controller). Getter takes no arguments and returns an instance of a Controller class, or null in case a controller couldn't be found.
Example
Example use with dedicated getter/setter methods:
The controller for current page is "<?= $page->getController() ?>".
<?= $page->setController('home')->render() ?>
Rendering Page with specific view
Page::renderView('list-item');
Page::renderView('home/json');
Added in Wireframe 0.25.0.
This method is used to render a Page object with specific view. By default views of current (view) template are used, but you can provide the view template name by separating it with a slash from the name of the view.
The main difference between this approach and one where you call Page::setView()
followed by Page::render()
is that after rendering the page Page::renderView()
will automatically restore original view and view template for said Page.
Example
<?= $page->renderView('list-item') ?>
<?= $page->renderView('home/json') ?>