laravel 5 implements template theme function (continued)_PHP tutorial

WBOY
Release: 2016-07-13 10:05:44
Original
680 people have browsed it

Laravel 5 implements the template theme function (continued)

In the previous article, we briefly discussed the laravel template theme function. In this article, we continue to discuss the implementation of the laravel template theme function. In this article The first implementation is relatively heavy, so take a look at it if you are interested.

In a previous article, I introduced how to dynamically change the template file path to implement the theme function by defining the Response macro: laravel implements the template theme function, but later I discovered that this method has a drawback, in the template When using @extends, you must explicitly specify the template path, which may cause confusion. I decided to change my mind. The theme should be completely isolated. If it does not exist, it does not exist. Do not automatically go to another theme to find an alternative template.

The original way of defining the response macro can be implemented, but I decided to use a more standardized method.

There is a method View::addNamespace in laravel's View class. This method is mentioned in the "Developing Extension Packages" section of the manual. I have to say that the layout logic of the Laravel manual is confusing. The description of this method should be placed in "View" Chapters are, so I won’t go into the digression. Let’s talk about this method first.

There is a way to write laravel rendering view:

Copy the code The code is as follows:


View::make('namespace::path');
//For example View::make('default::index.index');

How to define namespace is through this method:

The code is as follows:


View::addNamespace('default',app_path().'/views/default');

Smart friends may have noticed that this function can help us theme the template, such as:

The code is as follows:


//Register blue theme
View::addNamespace('blue',app_path().'/views/blue');
//Register red theme
View::addNamespace('red',app_path().'/views/red');
//Register green theme
View::addNamespace('green',app_path().'/views/green');

Call after

:

The code is as follows:


//Render the index.index template under the green theme
View::make('green::index.index');

However, we need to register the path mapping of these themes through the View::addNamespace method in advance, and we need to explicitly specify the namespace when rendering.

I don’t think it’s very convenient. Can’t View set a default namespace? In this way we only need to set it once, for example:

The code is as follows:


//We can write this in __construct
View::setDefaultNamespace('blue',app_path().'/views/blue');

After

:

The code is as follows:


//Actually equivalent to View::make('blue::index.index');
View::make('index.index');

Furthermore, we can set the theme through the background, write the theme name into the database, and the front-end reads and sets the theme:

The code is as follows:


//Assume that the configuration is read from the database, Option is the model class
$theme = Option::getByKey('theme');
View::setDefaultNamespace($theme,app_path().'/views/'.$theme);

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/962930.htmlTechArticlelaravel 5 Implementing the template theme function (continued) In the previous article, we briefly discussed the laravel template theme function. This article We continue to discuss the implementation of the laravel template theme function. This time...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!