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

