The MVC pattern (Model, View, Controller) dictates a clear division between controller logic and view generation. It means that you strictly use the controller code to determine what backend actions to make in order to process a request, but then hand over the response generation to the view. I.e. you can process, validate and store data via the controller, but pass the final result over to the view, which creates the output to be sent back to the client.
In Laravel this means that you end up returning a response from your controller, which sends relevant content to the client. The view is usually HTML output, because other response types would have different methods. I.e. it is somewhat implicit that “view” means “HTML response”.
The standard view
The following is a simple standard view stored in a php file. The view consists of HTML with embedded PHP to display variable values and other information. It is furthermore legal according to the MVC pattern to use PHP in the view for the purpose of generating view logic. View logic is code that alters the generated HTML output depending on some variable values. However, it is not any code that performs backend operations in the database, handles models etc.
<!-- Example view stored in resources/views/test.php --> <html> <body> <h1><?php echo $title; ?></h1> </body> </html>
Return a view from a route
You would usually return a view directly from a route, or more commonly from a controller’s action method. Either way, it looks like the following code snippet:
Route::get('/', function() { return view('test'); });
Adding data to a view via an array
You can add a data array to a view when you generate it.
// Data array with key/value pairs that will be available in the view $data = ['title' => 'The Title']; // Add the array to the view return view('test', $data); // Access the individual array keys as variable names in the view echo $title;
Adding data to a view via chained methods
Sometimes it makes more sense to add variables one by one via chained methods. This can be achieved in two ways.
// Using the old approach $view = view('test')->with('title', 'The Title'); // Using the new approach with magic methods $view = view('test')->withTitle('The Title');
Sharing data across multiple views
The difference between adding data to a view like above, and sharing data like below, is that by sharing data you can access it in any view you generate throughout your response. That is useful if you have multiple views in your response and they share the value of a common variable.
view()->share('title', 'The Title');
Checking if a view exists
There are some convenience methods available for processing views. One useful one is to check if a view exists. This can be done like below:
if (view()->exists('test')) { // It does exist }
Working with views is a good thing because it helps you to divide the controller and HTML code nicely. It also makes views reusable across your site. Other frameworks may implement views differently, but with the same advantages. Therefore using views is recommended pretty much regardless of the framework in use.
No comments yet (leave a comment)