# 09 Nog een drop down *We gaan nog een keer stap-voor-stap alle stappen uitvoeren om nog een drop down in bestelling te maken.* ### Opdracht 9
Maak nu een drop down voor de bestelling zodat de medewerker uit een lijstje van koffiesoorten kan kiezen bij het opnemen van de bestelling. [![image-1616605448841.png](https://www.roc.ovh/uploads/images/gallery/2021-03/scaled-1680-/image-1616605448841.png)](https://www.roc.ovh/uploads/images/gallery/2021-03/image-1616605448841.png) Gebruik hiervoor het stappenplan dat hieronder is beschreven.
#### Het stappenplan voor een drop down Schrijf eerst het volgende op: In welk model komt de drop down? Dit noemen we de target. (in opdracht 2 hierboven is dat *Bestelling*) Waar komt de informatie voor de Drop Down uit? Dit noemen we de source. (in opdracht 2 hierboven is dat *Menu*) #### Voer nu de stappen 1-6 uit 1. Zet in de target controller welke source model we willen gebruiken. ``` // in controller van target use app\models\; ``` 2. Haal in de target controller in de actionCreate() de informatie uit de source op. ``` // sourceName bedenk jij zelf en daarin staat de informatie die in de drop down moet komen. $sourceName = source::find()->all(); ``` 3. Geef vanuit de target controller in de actionCreate() de informatie door aan de view. ``` return $this->render('create', [ 'sourceName' => $sourceName, .... ]); ``` 4. Open de view create in de target (view) en geef de informatie door aan \_form view. ``` render('_form', [ 'sourceName' => $sourceName, ... ]); ``` 5. Open de view \_form in de target (view) en zet de informatie om in een assiociative array ``` // in dit voorbeeld worden id en naam gebruikt: // id is het veld dat moet worden opgeslagen // naam is het veld dat in de drop te zien is $sourceNameList = ArrayHelper::map($sourceName,'id','naam'); ``` 6. Pas het invoerveld aan in de \_form van de target (view). ``` // veld_in_de_db is het veld van de target dat in dit invoerveld wordt weggeschreven. field($model, 'veld_in_de_db')->dropDownList($$sourceNameList, ['prompt' => '']) ?> ``` Als je alles correct gedaan hebt dan moet je nog 1 regel aanpassen in de code om de functionaliteit te gebruiken. Yii controleert automatisch of alle databasekolommen zijn ingevuld in het formulier. Dit controleren wordt *validatie* genoemd. Deze regels staan in het model. Omdat je geen Bestelling ID opgeeft bij het maken van een bestelling moet je deze requirement verwijderen op regel 33 van model Bestelling. ```PHP return [ [ ['naam', 'medewerker_id', 'menu_id', 'status'], 'required'], ... ... ] ``` ### Inleveren 1. schermafdruk yii-09-jouw-naam met het form waarin je de drop down van de producten (opengeklapt) laat zien. Maak een schermafdruk van je gehele browser. 2. de *BestellingController.php* en zet jouw naam bij de aanpassingen die je hebt gedaan. \--