Cooking Cake
-
Upload
boite-witte -
Category
Self Improvement
-
view
726 -
download
1
description
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