php - How to validate given data in ORM? -
php - How to validate given data in ORM? -
kohana's orm comes built in kohana's validation.
as much understood, validates fields will be added database. won't work me because need validate fields come $_post
(in simple speaking).
let me give example.
in controller:
$data = arr::extract($this->request->post(), array('username', 'password', 'password_repeatedly', 'email')); seek { orm::factory('user')->sign_up($data); $this->request->redirect('sign-in'); } catch(orm_validation_exception $exception) { $errors = $exception->errors('error_messages'); echo 'there errors:<br />'; echo debug::dump($errors); exit; }
variable $data
array need validate. method sign_up()
custom method in orm model create user. sorry "echo'es" , "exit's" in controller - i'm debugging...
my orm model looks this:
public function rules() { homecoming array( 'username' => array( array('not_empty') ), 'hashed_password' => array( array('not_empty') ), 'email' => array( array('not_empty') ) ); } public function sign_up($post) { $salt = $this->_hurricane->generate_salt(); $hashed_password = $this->_hurricane->hash_password($post['password'], $salt); $this->username = $post['username']; $this->hashed_password = $hashed_password; $this->salt = $salt; $this->email = $post['email']; $this->save(); }
i want check 3 elements of variable $data
not empty! said, checks elements before orm::save()
called. , if ypu closer @ code... in custom method have set hashed_password
something. create hashed. problem if user haven't submitted password (i phone call field 'password' in html form, 'hashed_password' in database)... if no password submitted - hash empty string lead hash anyway. hashed_password
set!
then validation turned on orm::save()
, in conclusion - password never can perchance empty! how deal this? validation in controller? how deal it? maybe little bit different logic?
p.s. other suggestions code appreciated. in advice!
i don't see 'wrong' current method.
you can add together status (model_user::signup()
) check if requested password empty before hashing (ofc, not setting @ if is), it'll remain empty , create validation fail.
one more thing can notice here signup method ambiguous, done using normal create() combined filter password (so hashed_password , salt set when it's changed).
imho it's practice utilize conditional rules / filters, depending on current objects' state.
php validation kohana-3 kohana-orm
Comments
Post a Comment