Views optimaliseren Inleiding We hebben nu een werkende CRUD. We gaan nog wat aanpassingen maken, maar we gaan eerst onze view een beetje herorganiseren. We hebben nu drie views: index edit update Deze drie views lijken op elkaar en hebben allemaal een standaard HTML template. Eigenlijk is alleen de anders. En als we later een menu of banner willen maken dan zal die banner op alle drie de pagina's getoond moeten worden. We gaan de template nu splitsen in een basis template en in een deel dat voor de views anders is. Basis (blade) template Maak een nieuwe template in de resources/view folder en noem deze base.blade.php. Plaatst de volgende code. resources/view/base.blade.php Stocks

Stocks

@yield('main')
In de index.blade.php (in de stocks folder!) passen we de template aan. resources/view/stocks/index.blade.php @extends('base') @section('content')
Add Stock
@foreach($stocks as $stock) @endforeach
ID Stock Name Stock Ticket Stock Value Updated at Update Delete
{{$stock->id}} {{$stock->stock_name}} {{$stock->ticket}} {{$stock->value}} {{$stock->updated_at}} Edit
@csrf
@endsection Vanuit de controller wordt nog steeds de index.blade.php aangeroepen. Op regel 1 wordt de base.blade.php file als het ware included. De base view wordt als het ware op regel 1 ingevoegd. In de base view staat (op regel 13) yield('content'). Dit zorgt ervoor dat alle code die in de index view tussen @section('content') en @endsection staat, wordt ingevoegd op regel 13 van de base view. Lees dit nog een keer goed door, bekijk de templates en probeer te begrijpen wat er gebeurt. Opdracht Verander de create en update view ook zodat deze ook gebruik maken van de base view. Op regel 1 van de create en update view moet je dus @extends('base') plaatsen. Er zijn nu drie pagina's die allemaal gebruik maken van de base view. Alle pagina's hebben dezelfde

title. Die gaan we aanpassen. De create , update en index view krijgen allemaal een eigen titel. Titel aanpassen In de index.blade.php zetten we vlak voor de @section('content') de volgende regel code: @section('title', 'List of Stocks') Dit is eigenlijk hetzelfde als: @section('title') List of Stocks @endsection Er is dus nu een nieuwe sectie met allen de string "List of Stocks". In de base view wordt de titel regel vervangen door:

@yield('title')

Op deze manier wordt de section 'titel' in de

tag geplaatst. Opdracht Als dit werkt dan pas je op dezelfde manier de titel voor de create en update pagina aan. View Titel index List of Stocks create New Stock update Update Stock Test Controleer goed of alles werkt! Als het goed is, dan zien de schermen er zo uit: --