cooking cake

60
Cooking Cooking Cake Cake

Upload: boite-witte

Post on 23-May-2015

729 views

Category:

Self Improvement


1 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Cooking Cake

Cooking Cooking CakeCake

Page 2: Cooking Cake

Cooking Cake

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

Page 3: Cooking Cake

Een Een FrameworkFramework is net een is net een kookboekkookboek

Page 4: Cooking Cake

Want

Page 5: Cooking Cake

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

Page 6: Cooking Cake

En

Page 7: Cooking Cake

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

Page 8: Cooking Cake

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

Page 9: Cooking Cake

En dat is…

Page 10: Cooking Cake

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

Page 11: Cooking Cake

Ofwel…

Page 12: Cooking Cake

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

Page 13: Cooking Cake

Want een recept is

Page 14: Cooking Cake

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

Page 15: Cooking Cake
Page 16: Cooking Cake

Wat gaan we Wat gaan we makenmaken??

Page 17: Cooking Cake
Page 18: Cooking Cake

Wat zijn Wat zijn daarvoordaarvoor de de benodigdhedenbenodigdheden??

Page 19: Cooking Cake

Een Een modelmodel

Page 20: Cooking Cake

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

Page 21: Cooking Cake

In een ERD ziet dat er als volgt uit:

Page 22: Cooking Cake
Page 23: Cooking Cake

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

Page 24: Cooking Cake

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

Page 25: Cooking Cake

Een tekstveld heeft als eigenschap TEXT

Page 26: Cooking Cake

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

Page 27: Cooking Cake

Datum wordt in de database opgeslagen als een DATETIME.

Verschillende woorden worden gescheiden door een underscore

Page 28: Cooking Cake

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;

Page 29: Cooking Cake

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'

);

Page 30: Cooking Cake

Het Task-Model

Page 31: Cooking Cake

<?phpclass Task extends AppModel{

var $name = 'Task';}?>

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

Page 32: Cooking Cake

De De ingrediënteningrediënten staan klaar staan klaar

Page 33: Cooking Cake

Nu gaan we de Nu gaan we de cakecake bereidenbereiden

Page 34: Cooking Cake

Binnen cakePHP vindt de bereiding plaats met:

-Controllers-Components

Page 35: Cooking Cake

Een Een controlercontroler

Page 36: Cooking Cake

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

Zoals het smelten van boter

Page 37: Cooking Cake

Een Een componentcomponent

Page 38: Cooking Cake

Een component is een actie die gedeeld wordt door meerdere controlers

Zoals het mixen van de ingrediënten.

Page 39: Cooking Cake

De logica voor onze Takenlijst is minder omslachtig.

We hebben maar 1 model en daardoor maar 1 controler.

We zullen daarom geen component schrijven

Page 40: Cooking Cake

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()

Page 41: Cooking Cake

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'));}

}?>

Page 42: Cooking Cake

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());

}}?>

Page 43: Cooking Cake

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');

}}

}}?>

Page 44: Cooking Cake

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');

}}?>

Page 45: Cooking Cake

Een Een viewview

Page 46: Cooking Cake

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

Page 47: Cooking Cake

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.

Page 48: Cooking Cake

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

Page 49: Cooking Cake

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/');?>

Page 50: Cooking Cake

De Views – index.ctp

Page 51: Cooking Cake

De Views – view.ctp

Vergelijkbaar met index.ctp, alleen meer waarden toegevoegd

Page 52: Cooking Cake

De Views – view.ctp

Page 53: Cooking Cake

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');

?>

Page 54: Cooking Cake

De Views – add.ctp

Page 55: Cooking Cake

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');

?>

Page 56: Cooking Cake

CakeCake in de oven in de oven

Page 57: Cooking Cake

En de code testen

Page 58: Cooking Cake

Dus een webapplicatie bouwen met cakePHP is

Page 59: Cooking Cake

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

Page 60: Cooking Cake

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