Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between View Composer and Creator in Laravel?

According to Laravel 4 documentation.

Composer is:

View composers are callbacks or class methods that are called when a view is rendered. If you have data that you want bound to a given view each time that view is rendered throughout your application, a view composer can organize that code into a single location. Therefore, view composers may function like "view models" or "presenters".

View::composer('profile', function($view) {     $view->with('count', User::count()); }); 

And

Creator is:

View creators work almost exactly like view composers; however, they are fired immediately when the view is instantiated. To register a view creator, simple use the creator method

View::creator('profile', function($view) {     $view->with('count', User::count()); }); 

So the question is : What is the difference?

like image 801
Pars Avatar asked Oct 09 '13 07:10

Pars


People also ask

What is view composer Laravel?

View composers are callbacks or class methods that are called when a view is rendered. If you have data that you want to be bound to a view each time that view is rendered, a view composer can help you organize that logic into a single location.

What is view laravel?

It separates the application logic and the presentation logic. Views are stored in resources/views directory. Generally, the view contains the HTML which will be served by the application.

How do I load a view in laravel?

Loading a view in the controller is easy. You just need to add `view('viewname')` method while returning from the controller method. `view()` is a global helper in Laravel. In this method, you just need to pass the name of the view.


1 Answers

When you use View::creator you have the chance to override the variables of view in the controller. Like this:

View::creator('layout', function($view) {     $view->with('foo', 'bar'); });  // in controller return View::make('layout')->with('foo', 'not bar at all');  // it's defined as 'not bar at all' in the view 

-

View::composer('hello', function($view) {     $view->with('foo', 'bar'); });  // in controller return View::make('hello')->with('foo', 'not bar at all');  // it's defined as 'bar' in the view 
like image 138
Hkan Avatar answered Sep 19 '22 02:09

Hkan