рд╣рдо рдХрд╛рд░реНрд░рд╡рд╛рдИ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдирд┐рдзрд┐рдордВрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

рд╢реБрдн рджреЛрдкрд╣рд░ рд╕рд╛рдерд┐рдпреЛрдВ, рдЖрдЬ рдореИрдВ ZF 1 рдкрд░ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдкрд░реА рдХрдерд╛ рдмрддрд╛рдКрдВрдЧрд╛ (рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ рд╣реБрдЖ рд╣реИ)ред
рдЕрдЪреНрдЫреА рдУрдУрдкреА рдкреБрд╕реНрддрдХреЛрдВ рдореЗрдВ, рдЕрдХреНрд╕рд░ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд░рд╛рд╕рдд рдХреЛ рджреВрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХрд┐рд╕реА рдХреЛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдордВрдбрд▓ рдкрд╕рдВрдж рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдЗрд╕реЗ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рд╢реБрд╖реНрдХ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдХреИрд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ (рдФрд░ рдЬрдм рдпрд╣ рдЕрдВрдд рдореЗрдВ рдЖрддрд╛ рд╣реИ, рддреЛ рдПрдХ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ? тАЭ), рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рдЕрдиреБрднрд╡ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред

рдФрд░ рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕рдорд╕реНрдпрд╛ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ:
31 рдХрдВрдЯреНрд░реЛрд▓рд░ рдПрдХреНрд╢рди, рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдореЗрдВ indexAction (), addAction (), editAction (), searchAction () рддрд░реАрдХреЗ рд╣реИрдВред
рд╕рдорд╕реНрдпрд╛ рдирдВрдмрд░ 1: рд╕рдмрд╕реЗ, рд▓реЗрдХрд┐рди рд╕рднреА рдирд╣реАрдВред рдмрд╛рдХреА рдореЗрдВ, рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИ,
рд╕рдорд╕реНрдпрд╛ # 2: EditAction () рдФрд░ addAction () рд╡рд┐рдзрд┐рдпрд╛рдБ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд╣реИрдВ, рдФрд░ рд╕рднреА рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИрдВ, рдореЙрдбрд▓ рдХреА рдлреЙрд░реНрдо рдФрд░ рдмрдЪрдд рдХреА рд╢реБрд░реВрдЖрдд рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрдВред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рддрдп рдХрд┐рдпрд╛, рдореИрдВ рдЗрд╕реЗ рдХреЛрдб рдореЗрдВ рддреБрд░рдВрдд рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред

рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛
Class Common_Controller extends Zend_Controller_Action { /** *     . * @var string; */ protected $modelClass = ''; /** *       . * @var string; */ protected $editFormClass = ''; /** * JS ,   ,      . * @var string; */ protected $jsModelFile = ''; /** *     , *  $id  -   ,   -  . * * @param mixed $id; * @return Model_Record $model; */ protected function modelFactory( $id = null ) { $modelClass = $this->modelClass; if ( $id ) { $model = $modelClass::find( $id ); } else { $model = $modelClass::create(); } return $model; } /** *      . * * @param Model_Record $model; * @return Zend_form $form; */ protected function formFactory( Model_Record $model ) { $formClass = $this->editFormClass; $form = new $formClass(); $form->setDefaults( $model->toArray(1) ); return $form; } /** *       . * * @param Model_record $model; * @param Zend_Form $form; */ protected function save( Model_Record $model , Zend_Form $form ) { $model->fromArray($form->getValues(), false); $model->save(); } /** *   , *     editAction()   . */ protected function _editActionHelper() { $id = $this->_request->getParam('id'); if ( !$id ) { throw new Zend_Controller_Action_Exception('  ' , 404); } //   $model = $this->modelFactory($id); if ( !$model ) { throw new Zend_Controller_Action_Exception('  ' , 404); } $this->view->model = $model; //   $this->view->PageTitle = $model->getFullTitle(); //    $form = $this->formFactory( $model ); $this->view->form = $form; //    get- -   ( ) ,     if ( $this->_request->isGet() ) { $form->redirect->setValue( $_SERVER['HTTP_REFERER'] ); } // ,       // ... //   $model->lock(); // js   if ( $this->jsModelFile ) { $this->view->headScript()->appendFile( '/js/models/' . $this->jsModelFile ); } //   if ( isset($_POST['save']) || isset($_POST['saveExit']) ) { //  if ( $form->isValid( $this->_request->getPost() ) ) { //   try { Model::connection()->beginTransaction(); $this->save( $model, $form ); Model::connection()->commit(); $model->releaseLock(); $this->view->Flash()->addSuccess( 'Success !' ); // ,     //      $redirect = '/' . $this->_request->getControllerName() . '/edit/id/' . $model->ID . '?redirect=' . $this->_request->getParam('redirect', '/'); //    if ( isset($_POST['saveExit']) ) { $redirect = $this->_request->getParam('redirect', '/'); } $this->_redirect( $redirect ); } catch (Exception $e) { Model::connection()->rollback(); $this->view->Flash()->addError( $e->getMessage() ); } } else { $this->view->Flash()->addError("   "); } } } } 

рд╕рдВрд░рдХреНрд╖рд┐рдд рд╡рд┐рдзрд┐ рдореЙрдбрд▓рдлреИрдХреНрдЯрд┐рдВрдЧ () рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рдЬреБрдбрд╝реЗ рдореЙрдбрд▓ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИред рдореЙрдбрд▓ рдХрд╛ рд╡рд░реНрдЧ рдЪрд░ $ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ-> рдореЙрдбрд▓рдХреНрд▓рд╛рд╕ рдФрд░ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЕрдиреБрдХреВрд▓рди рдпрд╣рд╛рдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдореЙрдбрд▓ рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рддрд░реАрдХреЗ рд╕реЗ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рд╣рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдмрд╕ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рд╕рдВрд░рдХреНрд╖рд┐рдд рд╡рд┐рдзрд┐ formFactory () рдПрдХ рд╕рдВрдкрд╛рджрди рдлрд╝реЙрд░реНрдо рдмрдирд╛рддрд╛ рд╣реИ, рдЕрдиреБрдХреВрд▓рди рдореЙрдбрд▓рдлреИрдХреНрдЯреНрд░реА () рдХреЗ рд╕рдорд╛рди рд╣реИред

рд╕рдВрд░рдХреНрд╖рд┐рдд () рд╕рд╣реЗрдЬреЗрдВ () рд╡рд┐рдзрд┐ рдкреНрд░рд╕реНрддреБрдд рдлреЙрд░реНрдо рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдкрд╛рд░рд┐рдд рдореЙрдбрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрддреА рд╣реИ, рдпрд╣рд╛рдВ рдкреИрдВрддрд░реЗрдмрд╛рдЬрд╝реА рдХреЗ рд▓рд┐рдП рднреА рдЬрдЧрд╣ рд╣реИ, рдЕрдЧрд░ рдЗрдХрд╛рдИ рдХреЛ рдмрдЪрд╛рдиреЗ рд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдлреИрд▓рддрд╛ рд╣реИред рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рд╡рд┐рдзрд┐ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕рдВрджреЗрд╣ рдореЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕рдордЭрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рд╕рд╣реЗрдЬреЗрдВ () рдХреЗрд╡рд▓ рдореЙрдбрд▓ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдХреЛрдИ sql рдХреНрд╡реЗрд░реА рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо addTag (), setChannles (), рдЖрджрд┐ рдЬреИрд╕реЗ рддрд░реАрдХреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдЕрдкрд╛рд░рджрд░реНрд╢реА saveFromArray () рд╡рд┐рдзрд┐ рдХреЗ рдмрдЬрд╛рдпред
рдЗрд╕ рд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде, рдореЙрдбрд▓ рдФрд░ рд░реВрдк рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ рдПрдХ рдЗрдВрдЯреАрдЧреНрд░реЗрдЯрд░ рдХреА рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддрд╛ рд╣реИред

рдЗрд╕ рдЦрдВрдб рдореЗрдВ рдЕрдВрддрд┐рдо рд╕рдВрд░рдХреНрд╖рд┐рдд рд╡рд┐рдзрд┐ _editActionHelper () рд╣реИ, рдпрджрд┐ рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧ рдореЗрдВ рд╣рдореЗрдВ рдЗрдХрд╛рдИ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рд╣рдо рдмрд╕ рдЗрд╕рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
  public function editAction() { $this->_editActionHelper(); } 

рдЗрд╕реА рддрд░рд╣ рдЕрдиреНрдп рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдПред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╡реНрдпреБрддреНрдкрдиреНрди рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛:
 Class Video extends Common_Controller { protected $modelClass = 'Video'; protected $editFormClass = 'Form_Video'; protected function save( Model_Record $model , Zend_Form $form ) { parent::save( $model , $form ); $model->setChannels( $form->channels->getValue() ); } public function editAction() { $this->_editActionHelper(); } public function addAction() { $this->_addActionHelper(); } public function indexAction() { $this->_indexActionHelper(); } } 


рдкреАрдПрд╕ рдХреГрдкрдпрд╛, рдЕрдЧрд░ рдХреБрдЫ рдЧрд▓рдд рд╣реИ, рддреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВ, рдпрд╣ рд╕рднреА рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

Source: https://habr.com/ru/post/In213971/


All Articles