3, Views en Menu
In deze les leer je hoe je vanuit een Controller een view kan aanroepen. Je leert wat een view is en je leert dat er een view bestaat waarin de standaard layout van de pagina wordt beschreven. Om een extra menu-item toe te voegen gaan we de standaard layout in de views aanpassen.
Van Controller naar View
Verander de controller ExampleController.php die je in de vorige les hebt gemaakt in:
<?php
namespace app\controllers;
use Yii;
use yii\web\Controller;
class ExampleController extends Controller
{
public function actionSay($message = 'empty')
{
return $this->render('say', ['message' => $message]);
}
}
In regel 12 roep je binnen Yii de view say aan en geef je de variabele $message mee.
De views staan in de directory views. In deze directory staan weer directories waarvan de naam overeenkomt met de controller-namen. En daarin staan dan de view zelf. De verwijzing naar de view say vanuit de controller in het bovenstaande voorbeeld verwijst dus naar views/example/say.php De views bestaan uit HTML-code en korte stukjes PHP-code.
Dus maak in de directory views een nieuwe directory met de naam example en maak daarin een nieuwe file say.php.
Zet in de file view/example/say.php
<?php
use yii\helpers\Html;
?>
<h2>
Hello <?= $message ?> !!!
</h2>
Je hebt nu een verbinding gemaakt tussen de controller functie (methode) say in de ExampleController naar de view/example/say.php
Menu item maken
Als je het vorige voorbeeld bekijkt dan zie je dat de view say.php niet alleen wordt getoond. Waar komt de menu bar anders vandaan?
Dat komt, omdat alle pagina's beginnen met de views/layouts/main.php. Vanuit layout/main.php wordt alles geregeld en vanuit deze file wordt ook de view die wij hebben gemaakt aangeroepen.
In de file views/layouts/main.php wordt de standaard pagina layout beschreven.
Kijk maar eens naar de file views/layouts/main.php, daar zie je op regel 66, <?= $content ?> op deze plaats komt jouw eigen view te staan. In ons voorbeeld say.php.
Opdracht: zoek in de file views/layouts/main.php naar de menubar. Zoek naar de standaard menu items zoals Home, About en Contact. Probeer zelf uit te vinden hoe je het country overzicht (country/index) kan toevoegen aan de menu-bar.
Als het is gelukt dan zal het nieuwe menu-item in alle pagina's zichtbaar zijn.
Tip: bedenk eerst wat de routing ook alweer was naar onze country pagina. Wat was de controller en wat was de functie (method) en hoe vertalen we die in de juiste route?
Country overzicht aanpassen
Onze CRUD-generator (Gii) heeft voor ons een country overzicht gemaakt. Als je de CountryController.php opent dan zie je dat function (method) actionIndex de view index aanroept. Open deze index file.
Widget
Je ziet dat er op regel 23 een zogenaamde widget wordt aangeroepen. Een widget is standaard Yii module waarmee je een stukje front end (in de view) kan plaatsen. In de parameters van deze widget zie je dat de kolommen Code, Name, Continent, Region en SurfaceArea worden afgedrukt.
Opdracht 1
Code, Name, Population, SurfaceArea en Capital.
Population laat inwoneraantal zien en SurfaceArea laat oppervlakte zien.
|
Stel we willen het kopje boven de kolom veranderen, dan kan dan als volgt. Vervang bijvoorbeeld 'SurfaceArea' in de GridView door het volgende array.
[ 'label' => 'Oppervlakte',
'attribute' => 'SurfaceArea',
],
Dit verteld de GridView snippet dat het label Oppervlakte moet zijn (dit wordt boven aan de pagina gezet) en dat de waarde in de kolom moet worden gevuld met 'SurfaceArea'.
Opdracht 2
|
We gaan de kolombreedte aanpassen. Vervang het blok van net door het volgende:
[ 'label' => 'Oppervlakte',
'attribute' => 'SurfaceArea',
'contentOptions' => ['style' => 'width:30px; white-space: normal;'],
],
Opdracht:
Opdracht
|
--