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'
    ),
)

1 réponse


Slinky
Auteur

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 ?