Waarom CakePHP?

Toen ik een tijd terug begon met CakePHP moest ik even wennen aan de gekke (php) syntax, maar nu ik er een paar keer mee gewerkt heb ben ik er helemaal tevreden mee.

Afgelopen week was ik iemand er van aan het overtuigen hoe makkelijk het is om met CakePHP te werken, maar dat kan eigenlijk het beste aan de hand van een voorbeeld, bij deze;

Dit is een voorbeeld uit het cms dat ik voor Blond-Amsterdam heb gemaakt;

Als je dit allemaal zelf wilt programmeren kost dit redelijk veel code (en dus tijd) maar met cake is dit zo gedaan;

De ‘controller’ (het ophalen van data):

<?php
 
class StoresController extends AppController {
 
	var $name = "Stores";
	var $helpers = array("Html", "Javascript", "Form","Pagination");
	var $components = array('ValidateUser','Pagination','Provinces');
 
 
	function index(){
		$criteria = NULL;
 
		list($order, $limit, $page) = $this->Pagination->init($criteria);
 
		$data = $this->Store->findAll($criteria, NULL, $order, $limit, $page); 
 
		$this->set("provinces_options", $this->Provinces->getProvinces());
 
		$this->set('data', $data);		
	}
 
}
 
?>

En de ‘view’ (het omzetten van de data naar beeld):

<?php
	echo $html->tag("h1", "Lijst met winkels");
	echo $html->tag("p", "Hieronder staat een lijst winkels");
 
	echo $html->tag("table");
	$pagination->setPaging($paging);
	$th = array("Opties",
			$pagination->sortBy("name","Naam"),
			$pagination->sortBy("zip_code","Postcode"),
			$pagination->sortBy("zip_code_letters","Postcode"),
			$pagination->sortBy("city","Plaats"),
			$pagination->sortBy("province","Provincie"),
			); 
 
	echo $html->tableHeaders($th); 
 
	foreach($data as $output) {
		$image = $html->tag("span","&nbsp;",array("class"=>"ss_sprite ss_page"));
		$tr = array(
			$html->link($html->tag("span","&nbsp;",array("class"=>"ss_sprite ss_page_edit")),array("action"=>"edit","id"=>$output['Store']['id']),array(),"",false,false).
			$html->link($html->tag("span","&nbsp;",array("class"=>"ss_sprite ss_page_delete")),array("action"=>"destroy","id"=>$output['Store']['id']),array(),"Wilt u deze winkel verwijderen?",false),
			$output['Store']['name'],
			$output['Store']['zip_code'],
			$output['Store']['zip_code_letters'],
			$output['Store']['city'],
			$provinces_options[$output['Store']['province']],
		);
		echo $html->tableCells($tr, array('class' => 'altRow'), array('class' => 'evenRow'));
	}
	echo $html->tag("/table");
 
echo $this->renderElement('pagination');
 
?>

Leave a Reply