Frontend/Views

To help generating views, CodeCube uses ​PHP Template Inheritance plugin, as well as various custom methods.

As explained in directory structure, all the files necessary to generate views are stored ​in resources directory. There, you can store css, js, images and various asset files in resources/assets directory, layouts and class-names for various PHP tags for the views that will be automatically generated by the system in ​resources/xml directory, and necessary PHP view files in ​resources/views​ directory.

Defining Layouts

To define a layout, you can create a ​layout.php file, and use ​startblock() ​& ​endblock() methods to define each section for the layout like below-

<html> 
<head>   
<title><?php startblock('title') ?><?php endblock() ?></title> 
</head> 
<body> 
<?php startblock('content') ?> <?php endblock() ?> 
</body> 
</html> 

Extending a Layout

Once defined you can extend the layout file in ​home.php​ file like below-

<?php inherits(‘layout’); ?> 
 
<?php startblock('title') ?>Home<?php endblock() ?> 
 
<?php startblock('content') ?>This is my content!<?php endblock() ?> 

Above, the ​inherits() method is used to call the parent view the child view is extending form.

Including other views & assets

To include other views, use the​ append()​ method like below-

append(‘front.leftbar', [‘items’ => $items]);

Above, ​views/front/leftbar.php file is included in the ​home.php file and items array is passed to it.

To include css files, use the style() method like below-

echo style('style.css');  

To include js files, use the script() method like below-

echo script('script.js');

To show the title of the application, use the title() method. To show any other text other then title, pass the text as parameter-

echo title(‘My Title’); 

It will show the generated title using the text along with project name given in the APP_NAME​ constant, like this- ​

My Title || Project Name 

To get the source of a file uploaded in the directory defined in the upload key in config/app.php​ file in a view, use the ​asset()​ method like below-

echo asset(‘document.pdf’); 

To show image in view, use the ​image()​ method like below-

echo image(‘my_image.jpg’);

To show an image’s thumbnail in view that was saved during upload, pass the thumbnail extension text as an argument to the ​image()​ method like below-

echo image(‘my_image.jpg’, 'alt', [], '_thumb');

The framework will automatically detect whether the image exists, If not it will use the default image from ​https://placeholder.com/​ as placeholder.

To show the default icon of the website, use the ​icon()​ method like below-

echo icon('favicon.ico');

Working with Routes & Urls

CodeCube provides some default functions for working with routes and URLs in views.

To show a route link in a view, use the ​route() method. The route must be defined in the routes/web.php​ file as a route key, otherwise the framework will report error.

echo route('signup'); 

You can add additional parameters to the route as an associative array like below-

 echo route('items/show', ['id' => $item['id']]);

You can add $_GET parameters of the current URL to a route using ​urlStr()​ method-

echo urlStr('items/show', ['id' => $item['id']]);

To get the route from the current URL, use ​get_route() method. For URL ​your-site-url/home, this method will extract the route ​/home​-

echo get_route();

To check whether the current URL is a specific route, use the ​route_is()​ method.

echo route_is('home') ? 'active' : ‘’;

In the above code, the framework checks whether the current route is​/home and if it is, shows active.