This is an outdated version of PHPasap. Please visit http://phpasap.com/docs for the latest version.

Views

Views contain the HTML markup. In a typical MVC framework data variables are passed to view file and it is upto the view file how to display them. Like say an array of user profiles would be passed and the view file may display the list in a ul li or in tr td format.

Views in PHPasap

Views in PHPasap reside in app/views/ directory. So suppose there is a file named welcome.php in this directory, then to use this view file in any of your Controller method you will use the below syntax

$view = View::render("welcome"); //render returns string containing html markup in welcome.php
return $view;
//OR

return View::make("welcome"); //make returns an object of View_Handler class

Remember you have to return the view string or View_Handler object and not echo it.

Passing data to View

The second argument to make() and render() method is an optional associative array whose keys will be passed as variables with corresponding value as the vaue of variable. See example below

return View::render("welcome", ["var_1"=>"value_1"]);

//OR

return View::make("welcome", ["var_1"=>"value_1"]);

Passing View as data to anther View

Sometimes you may want to seperate out the header and footer templates so that they can be used in common in all view files. Below is how you would do.

$header = View::render("header"); //remember to use render() which returns string and NOT make() which returns obj
return View::make("welcome", ["header"=>$header]);

Below too is a legal example. Here in a view file we call another view

app/views/template.php
<?php echo View::render("header"); ?>
    <div class="container">
    </div>
<?php echo View::render("footer"); ?>

Nested directories in View

The path passed to make() and render() method is always relative to views folder. Even if you are calling these methods in a view file or in a Controller the path will always be relative to the views folder.

Suppose you are using below file and directory structure in app/views

  • modules
    • welcome.php
  • template
    • full-width.php
    • left-sidebar.php

Then to access any of the above view files you may use below syntax

View::make("template/full-width"); //for app/views/template/full-width.php
View::make("modules/welcome"); //for app/views/modules/welcome.php