/**
  * Handle the command.
  *
  * @param ResponseFactory $response
  * @param ActionResponder $responder
  */
 public function handle(ResponseFactory $response, ActionResponder $responder)
 {
     $data = new Collection();
     if ($action = $this->builder->getActiveFormAction()) {
         $responder->setFormResponse($this->builder, $action);
         $original = $this->builder->getFormResponse();
         if ($original instanceof RedirectResponse) {
             $data->put('redirect', $original->getTargetUrl());
         }
     }
     $data->put('success', !$this->builder->hasFormErrors());
     $data->put('errors', $this->builder->getFormErrors()->toArray());
     $this->builder->setFormResponse($response = $response->json($data));
 }
 /**
  * Handle the command.
  *
  * @param ActionResponder $responder
  */
 public function handle(ActionResponder $responder)
 {
     $actions = $this->builder->getFormActions();
     if ($this->builder->getFormResponse()) {
         return;
     }
     if ($this->builder->hasFormErrors()) {
         return;
     }
     if (!$this->builder->canSave()) {
         return;
     }
     if ($action = $actions->active()) {
         $responder->setFormResponse($this->builder, $action);
     }
 }
예제 #3
0
 /**
  * Handle the command.
  *
  * @param Dispatcher $events
  */
 public function handle(Dispatcher $events)
 {
     $this->builder->fire('posting', ['builder' => $this->builder]);
     $this->builder->fireFieldEvents('form_posting');
     $this->dispatch(new LoadFormValues($this->builder));
     $this->dispatch(new ValidateForm($this->builder));
     $this->dispatch(new RemoveSkippedFields($this->builder));
     $this->dispatch(new HandleForm($this->builder));
     $this->dispatch(new SetSuccessMessage($this->builder));
     $this->dispatch(new SetActionResponse($this->builder));
     if ($this->builder->isAjax() && !$this->builder->getFormResponse()) {
         $this->dispatch(new SetJsonResponse($this->builder));
     }
     $this->builder->fire('posted', ['builder' => $this->builder]);
     $this->builder->fireFieldEvents('form_posted');
     $events->fire(new FormWasPosted($this->builder));
 }
예제 #4
0
 /**
  * Handle the form response.
  *
  * @param FormBuilder $builder
  */
 public function handle(FormBuilder $builder)
 {
     /*
      * If the form already has a response
      * then we're being overridden. Abort!
      */
     if ($builder->getFormResponse()) {
         return;
     }
     $entry = $builder->getFormEntry();
     $actions = $builder->getFormActions();
     $action = $actions->active();
     if ($entry && $entry instanceof Arrayable) {
         $entry = $entry->toArray();
     }
     $redirect = $action->getRedirect();
     if ($redirect instanceof RedirectResponse) {
         $builder->setFormResponse($redirect);
         return;
     }
     if ($redirect === false) {
         return;
     }
     $redirect = $this->parser->parse($redirect, compact('entry'));
     /*
      * If the redirect is null then use the current one.
      */
     if ($redirect === null) {
         $redirect = $this->redirector->back()->getTargetUrl();
     }
     /*
      * If the URL is a closure then call it.
      */
     if ($redirect instanceof \Closure) {
         $redirect = app()->call($redirect, compact('builder'));
     }
     /*
      * Restore the query string prior if
      * we're coming from a table.
      */
     if ($query = $this->session->get('table::' . $redirect)) {
         $redirect = strpos($redirect, '?') ? $redirect . '&' . $query : $redirect . '?' . $query;
     }
     $builder->setFormResponse($this->redirector->to($redirect));
 }