Example #1
0
 function work(Request $request)
 {
     // Объект по URI запроса
     $obj = Data::read('/contents' . $request['REQUEST']['path']);
     $request->mix(['REQUEST' => ['object' => $obj]]);
     return parent::work($request);
 }
Example #2
0
 function startCheck(Request $request)
 {
     $input = $request->getInput();
     if (!isset($input['REQUEST']['handler']) && isset($input['REQUEST']['form'])) {
         $request->mix(['REQUEST' => ['handler' => $input['REQUEST']['form']]]);
     }
     return parent::startCheck($request);
 }
Example #3
0
 function work(Request $request)
 {
     $user = Auth::get_user();
     if ($user->uri() != '/system/users/admin') {
         $request->redirect('sign-in');
     }
     $request->mix(['REQUEST' => ['object' => mb_substr($request['REQUEST']['path'], mb_strlen($this->path))]]);
     return parent::work($request);
 }
Example #4
0
 function work(Request $request)
 {
     $user = Auth::get_user();
     $request->mix(['REQUEST' => ['object' => $user]]);
     return parent::work($request);
 }
Example #5
0
 function work(Request $request)
 {
     $this->_base_uri = $request['REQUEST']['object']->uri();
     $request->mix(['REQUEST' => ['base_uri' => $this->_base_uri]]);
     if ($request['REQUEST']['form'] !== false) {
         // Обработка формы
         $session = array();
         try {
             // Вызов полей для свойств объекта
             $request->mix(['REQUEST' => ['call' => 'check']]);
             $list = $this->getList($request);
             if (is_array($list)) {
                 $input = $request->getInput();
                 $views = $this->linked()->views->linked();
                 foreach ($list as $obj) {
                     $name = preg_replace('/' . preg_quote($this->_base_uri . '/', '/') . '/u', '', $obj->uri());
                     $obj_input = [];
                     if (isset($input['REQUEST'][$name])) {
                         $obj_input['REQUEST']['value'] = $input['REQUEST'][$name];
                     }
                     if (isset($input['FILES'][$name])) {
                         $obj_input['FILES']['value'] = $input['FILES'][$name];
                     }
                     $obj_input['REQUEST']['object'] = $obj;
                     $views->start($request->mix($obj_input));
                 }
             }
             if (!$request['REQUEST']['object']->errors()->isExist()) {
                 // Выполнение действия
                 $this->process($request);
                 $this->_result = self::FORM_RESULT_OK;
                 if (!($redirect = $this->getCommands('redirect'))) {
                     $redirect = $this->redirect->inner();
                     if (!$redirect->is_draft() && $redirect->value() != '') {
                         $request->redirect(Request::url($redirect->value()));
                     }
                 }
             } else {
                 $this->_result = self::FORM_RESULT_ERROR;
             }
         } catch (\Exception $error) {
             $this->_result = self::FORM_RESULT_ERROR;
         }
         $session['result'] = $this->_result;
         if ($this->_result == self::FORM_RESULT_ERROR) {
             $session['object'] = $request['REQUEST']['object']->toArray();
             // @todo Для ajax запросов нужна развернутая информация об ошибках для каждого поля
             $session['message'] = 'Ошибки';
         } else {
             if ($this->_result == self::FORM_RESULT_ERROR) {
                 $session['message'] = 'Успех';
             }
         }
         // @todo Для ajax запросов в сессию сохранять нет смысла
         Session::set('form', array($this->uri() . $this->getToken() => $session));
         setcookie('token', $this->getToken(), 0, '/');
         return $session;
     } else {
         // Отображение формы
         $v = array();
         if (isset($request['COOKIE']['token']) && Session::is_exist('form')) {
             $form = Session::get('form');
             if (isset($form[$this->uri() . $request['COOKIE']['token']])) {
                 $form = $form[$this->uri() . $request['COOKIE']['token']];
                 Session::remove('form');
             }
             if (isset($form['object'])) {
                 $request['REQUEST']['object'] = Entity::fromArray($form['object']);
             }
             if (isset($form['result'])) {
                 $this->_result = $form['result'];
             }
         }
         $this->res->start($request);
         return $this->show($v, $request);
     }
 }