CakePHP e gli enum

Postato in tech web php il giorno 25/08/2011 alle ore 19:23

In questi giorni sto studiando il framework CakePHP, che ha un'ottima documentazione, sebbene manchi di chiarezza in qualche passaggio.

Un problema che ho dovuto affrontare è stato mostrare in un form valori predefiniti per un determinato campo sottoforma di un drop-down box (select) e che sostituiscano il tipo di dati enum che non è ancora supportato in CakePHP.

Ad esempio, un Task può avere come status i seguenti valori: "assigned","started", "closed".
Nel suo model perciò ho creato un metodo che riempie un array in questo modo:

class Task extends AppModel{
	var $name = 'Task';
	//other stuff

	function setStatus(){
		return array("assigned","started", "closed");
	}
}

 

Nel controller della classe invece, dentro ad ogni metodo che ne avrà bisogno, richiamerò l'array in questo modo:

class TasksController extends AppController{
	var $name = 'Tasks';

	function index(){
		$statuses = $this->Task->setStatus();
		$this->set('statuses', $statuses);
		$this->set('tasks', $this->Task->find(ll));
	}
}

 

Ora nella view per ottenere lo status del task basterà utilizzare:

$status = $statuses[$task['Task']['status']];

 

 

Nessun commento - Commenta

Categorie