Skip to main content

Views

In deze les leer je hoe je vanuit een Controller een view kan aanroepen.

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 directories waarvan de naam overeenkomt met de controller-namen. En daarin staan dan de view zelf. De views zijn in principe HTML 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/mainphp, daar zie je op regel 66, <?= $content ?> op dee 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 eigen say pagina als extra menu item kan toevoegen.

Tip: bedenk eerst wat de routing ook alweer was naar onze say pagina. Wat was de controller en wat was de functie (method) en hoe vertalen we die in de juiste route?

--