Cooking Cake

Post on 23-May-2015

729 views 1 download

description

Hoe maak je een takenlijst in cakePHP Meer info: http://www.boitewitte.nl/?p=195

Transcript of Cooking Cake

Cooking Cooking CakeCake

Cooking Cake

-Een Framework-Het MVC model-Wat gaan we maken?-Informatie-Functionaliteit-Weergave

Een Een FrameworkFramework is net een is net een kookboekkookboek

Want

Een Framework is een verzameling van afspraken en softwarecomponenten die het programmeren of scripten vereenvoudigen

En

Een Kookboek is een verzameling van recepten volgens afspraken die het koken vereenvoudigen

cakePHPcakePHP is een is een frameworkframework gebaseerd op het gebaseerd op het MVC-modelMVC-model

En dat is…

Een verdeling van de code in 3 delen, namelijk:-Model (de informatie)-View (de weergave)-Control (de logica)

Ofwel…

Het Het MVC modelMVC model is net een is net een ReceptRecept

Want een recept is

Een verdeling van het bereiding in 3 delen, namelijk:-Ingrediënten (de benodigdheden) - Model-Bereidingswijze (de bewerkingen of logica) - Control-Vorm (hoe komt het eruit te zien) - View

Wat gaan we Wat gaan we makenmaken??

Wat zijn Wat zijn daarvoordaarvoor de de benodigdhedenbenodigdheden??

Een Een modelmodel

Een Taak heeft een-Naam-Omschrijving-Status-Datum van aanmaken-Begin datum-Eind datum-Prioriteit

In een ERD ziet dat er als volgt uit:

De naam van de tabel is in het Engels, met kleine letters, in meervoud.

Meerdere woorden zouden gescheiden worden door een underscore, bijvoorbeeld:tasks_have_users

De id is in kleine letters en heeft als veldeigenschappen:-INT-NOT NULL-AUTO INCREMENT

Een tekstveld heeft als eigenschap TEXT

Een getal wordt opgenomen in een database als een:- Integer met maximaal 11 tekens

Datum wordt in de database opgeslagen als een DATETIME.

Verschillende woorden worden gescheiden door een underscore

CREATE TABLE IF NOT EXISTS `cake_les`.`tasks` ( `id` INT NOT NULL AUTO_INCREMENT , `title` TEXT NULL , `description` TEXT NULL , `status` INT(11) NULL , `date_created` DATETIME NULL , `date_start` DATETIME NULL , `date_finish` DATETIME NULL , `priority` INT(11) NULL , PRIMARY KEY (`id`)

)ENGINE = InnoDB;

INSERT INTO `cake_les`.`tasks` (`title` ,`description` ,`status` ,`date_created` ,`date_start` ,`date_finish` ,`priority` )

VALUES ('Les geven in CakePHP', 'Een les geven voor het vak Software Architectuur.', '0', NOW( ) , '2009-01-23 12:40:42', '2009-01-23 14:00:05', '1'

);

Het Task-Model

<?phpclass Task extends AppModel{

var $name = 'Task';}?>

Het Task-Modelbestand: app/models/task.php

De De ingrediënteningrediënten staan klaar staan klaar

Nu gaan we de Nu gaan we de cakecake bereidenbereiden

Binnen cakePHP vindt de bereiding plaats met:

-Controllers-Components

Een Een controlercontroler

Een controler is een actie die meestal betrekking heeft op 1 model

Zoals het smelten van boter

Een Een componentcomponent

Een component is een actie die gedeeld wordt door meerdere controlers

Zoals het mixen van de ingrediënten.

De logica voor onze Takenlijst is minder omslachtig.

We hebben maar 1 model en daardoor maar 1 controler.

We zullen daarom geen component schrijven

De Task-controler

Functies van de Task-controler:-Weergeven van alle Tasks -> function index()-Gedetailleerd weergeven van 1 Task -> function view()-Wijzigen van een Task -> function edit()-Toevoegen van een Task -> function add()-Verwijderen van een Task -> function delete()

De Task-controler bestand: app/controllers/tasks_controller.php

<?phpclass TasksController extends AppController {

var $name = 'Tasks';

//Functie index() vindt alle Tasks en geeft ze door aan de View//via de functie set()

function index() {

$this->set(‘tasks', $this->Task->find('all'));}

}?>

De Task-controler bestand: app/controllers/tasks_controller.php

<?phpclass TasksController extends AppController {

var $name = 'Tasks';

//Functie view() geeft de waarde van 1 Taak met het //meegegeven id door

function view($id = null) {

$this->Task->id = $id;$this->set('task', $this->Task->read());

}}?>

De Task-controler bestand: app/controllers/tasks_controller.php

<?phpclass TasksController extends AppController {

var $name = 'Tasks';

//Functie add() voegt een nieuwe Taak toe aan de databasefunction add() {

if (!empty($this->data)) {

if ($this->Task->save($this->data)) {

$this->flash('Your task has been saved.', '/tasks');

}}

}}?>

De Task-controler bestand: app/controllers/tasks_controller.php

<?phpclass TasksController extends AppController {

var $name = 'Tasks';

//Functie delete() verwijderd een taak met de meegegeven idfunction delete($id) {

$this->Task->del($id);$this->flash('De taak met id: '.$id.' is verwijderd.', '/tasks');

}}?>

Een Een viewview

De Views

Voor alle functies van de task-controller moet een view gemaakt worden.

Views zijn meestal een verzameling van PHP-code met opmaak, dus bijvoorbeeld met:-HTML-XML-Text-CSV-JSON-Etc

De Views

De views komen allemaal in de map:Apps/views/controllernaam

Een view heeft als extensie: .ctp

De naam van het bestand is de naam van de functie waar deze aan gekoppeld wordt.

De Views

Views die we moeten aanmaken zijn dus:

-index.ctp (standaard view met overzicht van alle taken)-view.ctp (view voor gedetailleerde weergave van 1 taak)-add.ctp (view voor het toevoegen van een taak)-edit.ctp (view voor het wijzigen van een taak)

Deze komen allemaal in de map:app/views/tasks

De Views – index.ctp

<!-- File: /app/views/tasks/index.ctp --><h1>Task-list</h1><table> <tr> <th>Id</th><th>Title</th><th>When Finished</th><th></th><th>Delete</th></tr> <?php foreach ($tasks as $task) { ?> <tr> <td><?php echo $task['Task']['id']; ?></td> <td> <?php echo $html->link($task['Task']['title'],"/tasks/view/".$task['Task']['id']); ?> </td> <td><?php echo $task['Task']['date_finish']; ?></td> <td><?php echo $html->link('Wijzig', "/tasks/edit/" . $task['Task']['id'])?></td> <td><?php echo $html->link('X', "/tasks/delete/" . $task['Task']['id'], null, 'Weet je het zeker?' )?></td> </tr> <?php } ?></table><?php echo $html->link('Taak toevoegen','/tasks/add/');?>

De Views – index.ctp

De Views – view.ctp

Vergelijkbaar met index.ctp, alleen meer waarden toegevoegd

De Views – view.ctp

De Views – add.ctp

<!--/app/views/tasks/add.ctp-->

<h1>Add Task</h1><?php

echo $form->create('Task');echo $form->input('title', array('rows' => '1'));echo $form->input('description', array('rows' => '3'));echo $form->input('status');echo $form->input('priority');echo $form->input('date_start');echo $form->input('date_finish');echo $form->end('Save Task');

?>

De Views – add.ctp

De Views – edit.ctp

<!-- file:/app/views/posts/edit.ctp -->

<h1>Edit Task</h1><?php

echo $form->create('Task', array('action' => 'edit'));echo $form->input('id', array('type'=>'hidden')); echo $form->input('title', array('rows' => '1'));echo $form->input('description', array('rows' => '3'));echo $form->input('status');echo $form->input('priority');echo $form->input('date_start');echo $form->input('date_finish');echo $form->end('Save Task');

?>

CakeCake in de oven in de oven

En de code testen

Dus een webapplicatie bouwen met cakePHP is

Een Een PiecePiece of of cakecake!!!!!!

http://www.cakephp.org - De officiële sitehttp://www.boitewitte.nl/?p=195 - Deze presentatie met de bestandenhttp://delicious.com/boite/cakephp - Verzameling van door mij verzamelde links

Meer informatie