Eerst maar eens een link om de aktie om een nieuwe groep aan te maken te starten:
open views/groups/index.ctp en voeg deze regel toe:
<?php echo $html->link("Nieuwe groep", array("controller"=>"Groups", "action"=>"nieuweGroep"));?>
We kunnen nu de te nemen stappen door CAKE laten melden in debus informatie.
Start de groepen pagina en klik de "Nieuwe groep" link. Cake meldt nu dat er een method nieuweGroep() wordt verwacht in de controller GroupsController. Het skelet van de functie wordt meegegeven. Neem dus deze functie op in groups_controller.php:
/**
* Een nieuwe groep creeren
* @return
*/
function nieuweGroep() {
$user = $this->Session->read('User');
$this->set("user_id", $user['id']);
$this->layout = "loggedin";
}
De userID zit in de sessie, en die hebben we nodig. Verder gebruiken we de layout loggedin om te zorgen dat het menu verschijnt, inclusief de uitleggen link.
Druk op F5 om te refreshen en nu blijkt dat we een view missen: \views\groups\nieuwe_groep.ctp
Maak het gevraagde bestand aan. Daar moet een invulformulier op komen.
<h3>Nieuwe groep</h3>
<div id="formwrapper">
<?php echo $form->create(); ?>
<?php echo $form->input("naam", array("label"=>"Groepnaam"));?>
<?php echo $form->input("users_id", array("type"=>"hidden", "value"=> $user_id)); ?>
<?php echo $form->end("Opslaan"); ?>
</div>
Ik gebruik weer de formwrapper DIV om de uitlijning van de velden te regelen.
Verder verschijnt het hidden veld met de userID die doorgegeven wordt door de controller. Als we naar de bron van de pagina kijken, blijkt het formulier te posten naar groups/add. De controller verwacht dus een add() method in de groups-controller.
We maken deze method aan in groups_controller.php met de volgende body:
/**
* opslaan van een nieuwe groep
* @return
*/
function add(){
if(!empty($this->data)){
if($this->Group->save($this->data)){
$this->Session->setFlash("Groep opgeslagen");
} else {
$this->Session->setFlash("Fout bij opslaan van groep");
}
}
$this->redirect("/groups/index");
}
Nu kun je een nieuwe groep aanmaken in de database.
Geen opmerkingen:
Een reactie posten