Saiborg wrote:Lì si parlava di un menu dinamico, ma quella soluzione secondo me è ottimale per qualsiasi "elemento dinamico".
Purtroppo il problema è legato ai messaggi di errore di validazione 
Ho risolto utilizzando una funzione in "beforeRender":
// ./app/app_controller.php
function beforeRender()
{
$this->_persistValidation();
}
/**
* Called with some arguments (name of default model, or model from var $uses),
* models with invalid data will populate data and validation errors into the session.
*
* Called without arguments, it will try to load data and validation errors from session
* and attach them to proper models. Also merges $data to $this->data in controller.
*
* @author poLK
* @author drayen aka Alex McFadyen
*
* Licensed under The MIT License
* @license [url]http://www.opensource.org/licenses/mit-license.php[/url] The MIT License
*/
function _persistValidation() {
$args = func_get_args();
if (empty($args)) {
if ($this->Session->check('Validation')) {
$validation = $this->Session->read('Validation');
$this->Session->del('Validation');
foreach ($validation as $modelName => $sessData) {
if ($this->name != $sessData['controller']){
if (in_array($modelName, $this->modelNames)) {
$Model =& $this->{$modelName};
} elseif (ClassRegistry::isKeySet($modelName)) {
$Model =& ClassRegistry::getObject($modelName);
} else {
continue;
}
$Model->data = $sessData['data'];
$Model->validationErrors = $sessData['validationErrors'];
$this->data = Set::merge($sessData['data'],$this->data);
}
}
}
} else {
foreach($args as $modelName) {
if (in_array($modelName, $this->modelNames) && !empty($this->{$modelName}->validationErrors)) {
$this->Session->write('Validation.'.$modelName, array(
'controller' => $this->name,
'data' => $this->{$modelName}->data,
'validationErrors' => $this->{$modelName}->validationErrors
));
}
}
}
}
E nel processo di invio del commento:
function add()
{
if ( ! empty($this->data) )
{
$this->Comment->create();
if ( $this->Comment->save($this->data) )
{
$this->Session->setFlash(__('Your comment has been saved.', TRUE));
$this->redirect($this->referer() . '#comment-' . $this->Comment->id);
}
else
{
$this->_persistValidation('Comment');
}
}
$this->redirect('/posts/view/'.$this->Session->read('Validation.Comment.data.Comment.post_id'), null, true);
}
Purtroppo con questo sistema e l'uso del Language Switch ho dovuto ovviare andando a leggere l'id del post a mano, in quanto se uso
$this->redirect($this->referer());
mi aggiungeva la lingua all'url generando così un'errore.. 
Ho visto che tu hai soluzionato bene (quanto meno il lato front-end è fatto a dovere) e mi chiedevo come avevi ovviato tu al problema 