|
@@ -2,18 +2,16 @@
|
|
|
|
|
|
namespace Dcat\Admin\Controllers;
|
|
|
|
|
|
+use Dcat\Admin\Form\Field\File;
|
|
|
+use Dcat\Admin\Traits\HasUploadedFile;
|
|
|
use Dcat\Admin\Widgets\Form;
|
|
|
use Exception;
|
|
|
use Illuminate\Http\Request;
|
|
|
-use Symfony\Component\HttpFoundation\Response;
|
|
|
|
|
|
class HandleFormController
|
|
|
{
|
|
|
- /**
|
|
|
- * @param Request $request
|
|
|
- *
|
|
|
- * @return Response
|
|
|
- */
|
|
|
+ use HasUploadedFile;
|
|
|
+
|
|
|
public function handle(Request $request)
|
|
|
{
|
|
|
$form = $this->resolveForm($request);
|
|
@@ -31,6 +29,28 @@ class HandleFormController
|
|
|
return $form->handle($input) ?: $form->success();
|
|
|
}
|
|
|
|
|
|
+ public function uploadFile(Request $request)
|
|
|
+ {
|
|
|
+ $form = $this->resolveForm($request);
|
|
|
+
|
|
|
+ /* @var $field File */
|
|
|
+ $field = $form->field($this->uploader()->upload_column);
|
|
|
+
|
|
|
+ return $field->upload($this->file());
|
|
|
+ }
|
|
|
+
|
|
|
+ public function destroyFile(Request $request)
|
|
|
+ {
|
|
|
+ $form = $this->resolveForm($request);
|
|
|
+
|
|
|
+ /* @var $field File */
|
|
|
+ $field = $form->field($request->_column);
|
|
|
+
|
|
|
+ $field->deleteFile($request->key);
|
|
|
+
|
|
|
+ return $this->responseDeleted();
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* @param Request $request
|
|
|
*
|
|
@@ -40,11 +60,11 @@ class HandleFormController
|
|
|
*/
|
|
|
protected function resolveForm(Request $request)
|
|
|
{
|
|
|
- if (! $request->has('_form_')) {
|
|
|
+ if (! $request->has(Form::REQUEST_NAME)) {
|
|
|
throw new Exception('Invalid form request.');
|
|
|
}
|
|
|
|
|
|
- $formClass = $request->get('_form_');
|
|
|
+ $formClass = $request->get(Form::REQUEST_NAME);
|
|
|
|
|
|
if (! class_exists($formClass)) {
|
|
|
throw new Exception("Form [{$formClass}] does not exist.");
|
|
@@ -57,6 +77,10 @@ class HandleFormController
|
|
|
throw new Exception("Form method {$formClass}::handle() does not exist.");
|
|
|
}
|
|
|
|
|
|
+ if (method_exists($form, 'form')) {
|
|
|
+ $form->form();
|
|
|
+ }
|
|
|
+
|
|
|
return $form;
|
|
|
}
|
|
|
}
|