Bonjour à tous,
j'ai un petit problème en ce moment j'aimerais lancer la function getDraft quand le modèle trouve une erreur dans une de mes views
public function getDraft($username) {
$post = $this->find('first', array(
'conditions' => array('username' => $username, 'brand_id' => 99)
));
if (empty($post)) {
$this->save(array('username' => $username, 'brand_id' => 99
),false);
$post = $this->read();
}
return $post;
}
}
Voici ce qu'il m'affiche quand j'oublie de remplir un input. Je perds l'id du draft...
array(
'Post' => array(
'state' => '',
'city' => '',
'street' => '',
'postalcode' => '',
'phone' => '',
'brand_id' => '',
'title' => '',
'body' => '',
'price' => '',
'year' => '',
'email' => '',
'type_id' => null,
'type' => 'post',
'username' => 'admin'
)
)
Si il n'y a pas d'erreur j'ai ceci:
array(
'Post' => array(
'id' => '17',
'type' => '',
'hits' => '0',
'username' => 'admin',
'brand_id' => '99',
'type_id' => '0',
'price' => '',
'email' => '',
'street' => '',
'state' => '',
'city' => '',
'year' => '',
'phone' => '',
'postalcode' => '',
'title' => null,
'body' => null,
'created' => '2012-10-11 14:37:42',
'modified' => '2012-10-11 14:37:42'
),
)
J'ai trouvé une solution avec le controlleur
$this->Post->set($this->request->data);
if ($this->Post->validates()) {
// it validated logic
} else {
$user = $this->Session->read('UserAuth.User.username');
$this->request->data = $this->Post->getDraft($user);
$this->Post->id = $this->request->data'Post']'id'];
}
Est-ce qu'il existe une solution avec l'usage du model. Par exemple, AfterFilter ?