- Passing Data to Views
- Sharing Data with all Views

Understanding Views

Views (or Templates) in Laravel are stored in the "resources/views" directory. They are '.php' files that describe how some output should look, and can contain HTML, CSS, JavaScript, and PHP content.
In Laravel, there are two formats of view you can use: Blade (with ".blade.php" extension in file name) rendered with the Blade engine; or simple ".php" (which will not parse the Blade Template statements).

- Example of a simple Blade view:
1. Copy the following code and save it in a resources/views/light.blade.php file.
<html>
<body>
<h1>View is an effect, Vision is the source</h1>
</body>
</html>
2. Add the following line in routes/web.php file to set the route for the above view.
Route::get('/light', function(){
  return view('light');
});
3. Visit the following URL to see the output of the view.
//localhost:8000/light
- The output will appear as shown in the following image.
laravel Simple View
If the view file is into a sub-folder in "resources/views" directory, for example "resources/views/pages/name.blade.php", add the sub-folder name before file name:
return view('pages.name');
If you need to determine if a view exists, you may use the exists() method of the View facade. The method return true if the view exists:
use Illuminate\Support\Facades\View;

if(View::exists('pages.test')){
  //
}

Passing Data to Views

You can use variables in the view template file, with this syntax: {{$variable_name}} , then pass an array with key/value pairs as a second argument in the view() method.
The "key" in array must be the same as the name of the variable in template.

- Example of a simple Blade view:
1. Copy the following code and save it in a resources/views/greeting.blade.php file.
<html>
<head>
<title>{{$title}}</title>
</head>
<body>
<h1>Hello {{$name}}</h1>
</body>
</html>
2. Add the following line in routes/web.php file to set the route for the above view.
Route::get('/greeting', function(){
  $vars =['title'=>'Greetings', 'name'=>'Me'];
  return view('greeting', $vars);
});
3. Visit the following URL to see the output of the view.
//localhost:8000/greeting
- The output will appear as shown in the following image.
laravel Greetings View

Sharing Data with all Views

If you want to pass same data to all the views, use the view()->share() method.
The share() method will take two arguments: key and value.
Typically share() method can be called from boot() method of service provider.
We can use any service provider, like: AppServiceProvider or our own service provider.

- Example:
1. Create two view files: test.blade.php and test2.blade.php with the same code, in the "resources/views/" directory.
- Copy the following code in both the files.
<html>
<body>
<h1>Share {{$state}}</h1>
<h2>Receive {{$gift}}</h2>
</body>
</html>
2. Change the code of boot() method in the file app/Providers/AppServiceProvider.php as shown below. (Here, we have used the share() method, and the data that we have added will be shared with all the views).
&lt;?php
namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider {
  //Bootstrap any application services.
  //@return void
  public function boot(){
    view()->share('state', 'Peace');
    view()->share('gift', 'Love');
  }

  //Register any application services.
  //@return void
  public function register(){
    //
  }
}
3. Add the following lines in routes/web.php file.
Route::get('/test', function(){
  return view('test');
});
Route::get('/test2', function(){
  return view('test2');
});
4. Visit the following URLs:
//localhost:8000/test

//localhost:8000/test2
- The output for both URLs will appear as shown in the following image.
laravel Greetings View

- Documentation: Laravel - Views

Daily Test with Code Example

HTML
CSS
JavaScript
PHP-MySQL
Which meta tag provides a short description of the page?
<meta content="..."> <meta description="..."> <meta http-equiv="...">
<meta name="description" content="70-160 characters that describes the content of the page" />
Which CSS property is used to stop the wrapping effect of the "float"?
clear text-align position
#some_id {
  clear: both;
}
Click on the method which gets an array with all the elements in the document that have a specified tag name.
getElementsByName() getElementById() getElementsByTagName()
var divs = document.getElementsByTagName("div");
var nr_divs = divs.length;
alert(nr_divs);
Indicate the PHP function which returns the number of elements in array.
is_[) count() strlen()
$arr =[7, 8, "abc", 10);
$nri = count($arr);
echo $nri;        // 4
Laravel Views

Last accessed pages

  1. Images and Audio Uploader addon for CKEditor (2959)
  2. PHP OOP - Interfaces (2511)
  3. AJAX Course, free Lessons (7047)
  4. Convert XML to JSON in PHP (7893)
  5. PHP PDO - Select query, fetch (20327)

Popular pages this month

  1. Read Excel file data in PHP - PhpExcelReader (373)
  2. PhpSpreadsheet - Read, Write Excel and LibreOffice Calc files (302)
  3. Register and show online users and visitors (273)
  4. Courses Web: PHP-MySQL JavaScript Ajax HTML CSS Flash-AS3 (266)
  5. Insert, Select and Update NULL value in MySQL (172)