Completed
Push — master ( f5a087...fbf1fa )
by Song
02:41
created

HandleController::handleForm()   A

Complexity

Conditions 5
Paths 5

Size

Total Lines 25

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 5
nc 5
nop 1
dl 0
loc 25
rs 9.2088
c 0
b 0
f 0
1
<?php
2
3
namespace Encore\Admin\Controllers;
4
5
use Exception;
6
use Encore\Admin\Widgets\Form;
7
use Illuminate\Http\Request;
8
use Illuminate\Routing\Controller;
9
10
class HandleController extends Controller
11
{
12
    public function handleForm(Request $request)
13
    {
14
        if (!$request->has('_form_')) {
15
            throw new Exception('Invalid form request.');
16
        }
17
18
        $formClass = $request->get('_form_');
19
20
        if (!class_exists($formClass)) {
21
            throw new Exception("Form [{$formClass}] not exists.");
22
        }
23
24
        /** @var Form $form */
25
        $form = app($formClass);
26
27
        if (!method_exists($form, 'handle')) {
28
            throw new Exception("Form method {$formClass}::handle() not exists.");
29
        }
30
31
        if ($errors = $form->validate($request)) {
32
            return back()->withInput()->withErrors($errors);
33
        }
34
35
        return $form->sanitize()->handle($request);
36
    }
37
}