Additional Methods

Below details some additional methods available within the Apex/Svc/View class that may be useful during development. You may view a list of all methods available within the class at the Function Reference: Apex\Svc\View section.

Set Template File

During execution, you may set / change the template file that will be rendered at anytime with the View::setTemplateFile() method. For example, you may need to force an unauthorized or account verification required template to be rendered instead of the requested template.

This method accepts two parameters:

Variable Required Type Description
$template_file Yes string The template file to render once the View::render() method is called.
$is_locked No bool Defaults to false, but if set to true, the template file will be locked and future calls to the method will leave the template file unchanged.

For example, within the PHP class for the /search view:

<?php
declare(strict_types=1);

namespace Views;

use Apex\Svc\{View, App};

class search
{

    /**
     * Render
     */
    public function render(View $view, App $app):void
    {

        // Check if allowed to search...
        $can_search = false;

        // Set account upgrade required template
        if ($can_search !== true) { 
            $view->setTemplateFile('upgrade_account', true);
        }
    }
}

With the above code in place, instead of rendering the /search.html template, Syrus will render the /upgrade_account.html template.

NOTE: You may retrieve the current view that will be displayed via the View::getTemplateFile() method.

Render Block of HTML

Instead of rendering full template pages, you may render blocks of HTML code using the View::renderBlock() method, for example:

$html = 'large block of html code';

// Add necessary variables / blocks
$view->assign('', $variables);

// Render HTML
$html = $view->renderBlock($html);

Please note, when rendering blocks of HTML code, it will not dispatch the optional RPC call, execute a per-view PHP class, or apply any theme / layout.

Set Theme

Although generally never required, you may dynamically set the theme via the View::setTheme() method. This method simply takes one argument, being the theme within the /views/themes/ directory to use when rendering the next template.

You may also retrieve the existing theme that will be used via the View::getTheme() method.