рд╢реБрдн рджрд┐рди, рдкреНрд░рд┐рдп% рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо%ред
рдЕрдкрдиреЗ рдЬреАрд╡рди рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмрд╛рд░ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рдХреЛрдбред рдХрднреА-рдХрднреА рдРрд╕рд╛ рдХреЛрдб рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ: "рдХрд┐рд╕ рддрд░рд╣ рдХреА рдмрдХрд╡рд╛рд╕ред рдиреВрдбрд▓реНрд╕ | рдЧреЛрд╡реИрдирдХреЙрдб, рдЪрд▓реЛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВред"
рдпрд╣ рдЙрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рд╣реБрдЖ рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рд╢рд╛рдорд┐рд▓ рд╣реБрдЖ рдерд╛ред рдУрдУрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп 200-300 рд▓рд╛рдЗрди рд╡рд┐рдзрд┐рдпрд╛рдВ, рдХреЛрдб рджреЛрд╣рд░рд╛рд╡, рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд┐рд╕реА рднреА рд╕рдХрд╛рд░рд╛рддреНрдордХ рднрд╛рд╡рдирд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдерд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдкреАрдПрдо рдПрдХ рдмрд╣реБрдд рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рд╡реНрдпрдХреНрддрд┐ рдереЗ рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдордп рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдЦрд╛рд░рд┐рдЬ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдЕрдВрддрддрдГ HTML рд░реВрдкреЛрдВ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдмрджрд▓ рдЧрдИ, рдЬрд┐рд╕реЗ рдореИрдВ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдерд╛ рдлреЙрд░реНрдо рдХрд╛ рдХреЛрдб:
if($this->request->data['Model']['field'] > 0) { $this->Session->setFlash(┬лmessage┬╗); $this->redirect($this->referer()); } if($this->request->data['Model']['field'] == ┬лstring┬╗) { $this->Session->setFlash(┬лmessage┬╗); $this->redirect($this->referer()); }
рдЬрд┐рд╕ рдкрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЧрдИред рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ, рд╕рдорд╛рди рдбрд┐рдЬрд╛рдЗрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рджрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдЧрдИред рдирддреАрдЬрддрди, рдХрд╛рд░реНрд░рд╡рд╛рдИ рддрд░реНрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрдИ ifs рдХреЗ рдкреАрдЫреЗ рдЦреЛ рдЧрдпрд╛ рдерд╛ред рдЕрдХреНрд╕рд░ рдЗрди рдбрд┐рдЬрд╝рд╛рдЗрдиреЛрдВ рдХреЗ "рд╕рдВрдЧреНрд░рд╣" рдХреЛ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдореЗрдВ рджреЛрд╣рд░рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред CakePHP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдореЙрдбрд▓ рдлрд╝реАрд▓реНрдб рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕реЗ рд╕реАрдзреЗ рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛, рдЙрди рд░реВрдкреЛрдВ рдореЗрдВ рдЬреЛ рдореЙрдбрд▓ рдореЗрдВ рдЯреЗрдмрд▓ рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рдирд╣реАрдВ рдереЗ, рд╕рдВрдЪрд╛рд░рд┐рдд рдереЗред
рдЗрд╕ рдХреЛрдб рдХреЗ рд▓рд┐рдП рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд░реВрдкреЛрдВ рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ, ModelValidator рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдиреЗ рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреАред рдореБрдЭреЗ рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ рдЦрд╛рди-рдкреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛ред
рдкрд░рд┐рдгрд╛рдо рдПрдХ рдРрд╕рд╛ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдкреНрд░рдкрддреНрд░ рдХреЗ рд╕рд╣рдпреЛрдЧреА рд╕рд░рдгрд┐рдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
array( 'Model' => array(field_list))
рдорд╛рдиреНрдпрддрд╛ рд╡рд░реНрдЧ рдХреА рд╕рд╛рд░реА рд╢рдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг
HTML рдлреЙрд░реНрдо:
echo $this->Form->create('Model'); echo $this->Form->input('first_field', array('type' => 'text')); echo $this->Form->input('second_field', array('type' => 'text)); echo $this->Form->end();
рдЖрдХрд╛рд░ рд╡рд░реНрдЧ:
App::uses('Form', 'Forms.Lib/Form'); class ExampleForm extends Form { public $model = 'Example'; public $fields = array( 'first_field' => array( 'type' => 'text', ), 'second_field' => array( 'type' => 'text', ) ); public $validate = array( 'second_field' => array( 'isActive' => array( 'rule' => 'isActive', 'message' => "Is fields not active!" ), ), 'first_field' => array( 'aboveZero' => array( 'rule' => 'aboveZero', 'message' => "Number must be greater than 0", ), ), ); public function isActive(){ if(isset($this->options['user_id'])) { return false; } return (bool)$this->data[$this->model]['second_field']; } public function aboveZero() { return (is_numeric($this->data[$this->model]['first_field']) && ($this->data[$this->model]['first_field'] > 0)); } }
рдлрд╝реЙрд░реНрдо рдбреЗрдЯрд╛ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ExampleForm рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:
class ExamplesController extends AppController { public $name = 'Examples'; public $uses = array( 'Example', ); public $components = array( 'Forms.FormValidator' ); public $forms = array( 'ExampleForm', ); public function example() { if ($this->ExampleForm->validates($this->request->data)) { echo 'true validations'; } else { echo 'false validation'; } } }
рдПрдХ рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгреА рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ExampleForm рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:
public function example2() { $data = array( 'Example' => array( 'first_field' => 0, 'second_field' => true ) ); if ($this->ExampleForm->validates($data)) { echo 'true validations'; } else { echo 'false validation'; } }
рдПрдХ рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгреА рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ExampleForm рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдирд╛:
public function example3() { $data = array( 'Example' => array( 'first_field' => 0, 'second_field' => true ) ); $this->ExampleForm->addOptions(array('user_id' => $this->Auth->user('id'))); if ($this->ExampleForm->validates($data)) { echo 'true validations'; } else { echo 'false validation'; } }
рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдлреЙрд░реНрдо рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЗ рдкреНрд░рдХрд╛рд░, рд╡рд┐рднрд┐рдиреНрди рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝реЙрд░реНрдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорджрдж рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рддреНрдпрд╛рдкрди рдирд┐рдпрдореЛрдВ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЬреЛрдбрд╝ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
Github рдкреНрд▓рдЧрдЗрди рдХреЛрдбред