8
8
use Symfony \Component \HttpFoundation \RedirectResponse ;
9
9
use Symfony \Component \HttpFoundation \Request ;
10
10
use Symfony \Component \HttpFoundation \Response ;
11
+ use Symfony \Component \HttpFoundation \Session \Session ;
11
12
use Symfony \Component \Yaml \Yaml ;
12
13
13
14
class FrontController extends Controller
@@ -16,6 +17,9 @@ public function indexAction(Request $request)
16
17
{
17
18
$ manager = $ this ->get ('puphpet.extension.manager ' );
18
19
20
+ /** @var Session $session */
21
+ $ session = $ this ->get ('session ' );
22
+
19
23
if ($ request ->isMethod ('POST ' )) {
20
24
$ archive = $ manager ->createArchive ($ request ->request ->all ());
21
25
@@ -27,44 +31,74 @@ public function indexAction(Request $request)
27
31
return $ response ;
28
32
}
29
33
34
+ $ messages = $ session ->getFlashBag ()->all ();
35
+
30
36
return $ this ->render ('PuphpetMainBundle:front:template.html.twig ' , [
31
37
'extensions ' => $ manager ->getExtensions (),
38
+ 'messages ' => $ messages ,
32
39
]);
33
40
}
34
41
35
42
public function uploadConfigAction (Request $ request )
36
43
{
37
44
$ config = $ this ->normalizeLineBreaks ($ request ->get ('config ' ));
38
45
46
+ /** @var Session $session */
47
+ $ session = $ this ->get ('session ' );
48
+
39
49
try {
40
50
$ yaml = Yaml::parse ($ config );
41
- } catch (\Exception $ e ) {}
51
+ } catch (\Exception $ e ) {
52
+ $ session ->getFlashBag ()->add ('error ' , [
53
+ 'title ' => 'There was a problem parsing your config file ' ,
54
+ 'content ' => $ e ->getMessage (),
55
+ ]);
56
+
57
+ $ request ->setMethod ('GET ' );
58
+
59
+ return $ this ->indexAction ($ request );
60
+ }
42
61
43
62
if (empty ($ yaml )) {
44
- $ this -> get ( ' session ' ) ->getFlashBag ()->add (
45
- 'error ' ,
46
- 'The config file provided was empty! Please recreate your manifest manually below. '
47
- );
63
+ $ session ->getFlashBag ()->add (' error ' , [
64
+ 'title ' => ' The config file provided was empty ' ,
65
+ 'content ' => ' Check your config file, or manually recreate it in the GUI. ' ,
66
+ ] );
48
67
49
- return new RedirectResponse ($ this ->generateUrl ('puphpet.main.homepage ' ));
68
+ $ request ->setMethod ('GET ' );
69
+
70
+ return $ this ->indexAction ($ request );
50
71
}
51
72
52
73
$ manager = $ this ->get ('puphpet.extension.manager ' );
53
74
$ manager ->setCustomDataAll ($ yaml );
54
75
55
76
try {
77
+ $ session ->getFlashBag ()->add ('success ' , [
78
+ 'title ' => 'Success! ' ,
79
+ 'content ' => 'Your previously generated config file was successfully loaded! ' ,
80
+ ]);
81
+
56
82
$ rendered = $ this ->render ('PuphpetMainBundle:front:template.html.twig ' , [
57
83
'extensions ' => $ manager ->getExtensions (),
84
+ 'messages ' => $ session ->getFlashBag ()->all (),
58
85
]);
59
86
60
87
return $ rendered ;
61
88
} catch (\Exception $ e ) {
62
- $ this ->get ('session ' )->getFlashBag ()->add (
63
- 'error ' ,
64
- 'The config file provided had errors! Please recreate your manifest manually below. '
65
- );
89
+ $ session ->getFlashBag ()->clear ();
90
+
91
+ $ session ->getFlashBag ()->add ('error ' , [
92
+ 'title ' => 'There was a problem parsing your config file ' ,
93
+ 'content ' => sprintf (
94
+ '<p> Please recreate your manifest manually below.</p> ' .
95
+ '<p>Error message:</p><p>%s</p> ' , $ e ->getMessage ()
96
+ )
97
+ ]);
98
+
99
+ $ request ->setMethod ('GET ' );
66
100
67
- return new RedirectResponse ( $ this ->generateUrl ( ' puphpet.main.homepage ' ) );
101
+ return $ this ->indexAction ( $ request );
68
102
}
69
103
}
70
104
0 commit comments