@@ -205,51 +205,63 @@ public function redirect()
205
205
*/
206
206
public function getRedirectResponse ()
207
207
{
208
- if (!$ this instanceof RedirectResponseInterface || !$ this ->isRedirect ()) {
209
- throw new RuntimeException ('This response does not support redirection. ' );
208
+ $ this ->validateRedirect ();
209
+
210
+ if ('GET ' === $ this ->getRedirectMethod ()) {
211
+ return HttpRedirectResponse::create ($ this ->getRedirectUrl ());
210
212
}
211
213
212
- if (empty ($ this ->getRedirectUrl ())) {
213
- throw new RuntimeException ('The given redirectUrl cannot be empty. ' );
214
+ $ hiddenFields = '' ;
215
+ foreach ($ this ->getRedirectData () as $ key => $ value ) {
216
+ $ hiddenFields .= sprintf (
217
+ '<input type="hidden" name="%1$s" value="%2$s" /> ' ,
218
+ htmlentities ($ key , ENT_QUOTES , 'UTF-8 ' , false ),
219
+ htmlentities ($ value , ENT_QUOTES , 'UTF-8 ' , false )
220
+ )."\n" ;
214
221
}
215
222
216
- if ('GET ' === $ this ->getRedirectMethod ()) {
217
- return HttpRedirectResponse::create ($ this ->getRedirectUrl ());
218
- } elseif ('POST ' === $ this ->getRedirectMethod ()) {
219
- $ hiddenFields = '' ;
220
- foreach ($ this ->getRedirectData () as $ key => $ value ) {
221
- $ hiddenFields .= sprintf (
222
- '<input type="hidden" name="%1$s" value="%2$s" /> ' ,
223
- htmlentities ($ key , ENT_QUOTES , 'UTF-8 ' , false ),
224
- htmlentities ($ value , ENT_QUOTES , 'UTF-8 ' , false )
225
- )."\n" ;
226
- }
227
-
228
- $ output = '<!DOCTYPE html>
223
+ $ output = '<!DOCTYPE html>
229
224
<html>
230
- <head>
231
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
232
- <title>Redirecting...</title>
233
- </head>
234
- <body onload="document.forms[0].submit();">
235
- <form action="%1$s" method="post">
236
- <p>Redirecting to payment page...</p>
237
- <p>
238
- %2$s
239
- <input type="submit" value="Continue" />
240
- </p>
241
- </form>
242
- </body>
225
+ <head>
226
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
227
+ <title>Redirecting...</title>
228
+ </head>
229
+ <body onload="document.forms[0].submit();">
230
+ <form action="%1$s" method="post">
231
+ <p>Redirecting to payment page...</p>
232
+ <p>
233
+ %2$s
234
+ <input type="submit" value="Continue" />
235
+ </p>
236
+ </form>
237
+ </body>
243
238
</html> ' ;
244
- $ output = sprintf (
245
- $ output ,
246
- htmlentities ($ this ->getRedirectUrl (), ENT_QUOTES , 'UTF-8 ' , false ),
247
- $ hiddenFields
248
- );
239
+ $ output = sprintf (
240
+ $ output ,
241
+ htmlentities ($ this ->getRedirectUrl (), ENT_QUOTES , 'UTF-8 ' , false ),
242
+ $ hiddenFields
243
+ );
249
244
250
- return HttpResponse::create ($ output );
245
+ return HttpResponse::create ($ output );
246
+ }
247
+
248
+ /**
249
+ * Validate that the current Response is a valid redirect.
250
+ *
251
+ * @return void
252
+ */
253
+ protected function validateRedirect ()
254
+ {
255
+ if (!$ this instanceof RedirectResponseInterface || !$ this ->isRedirect ()) {
256
+ throw new RuntimeException ('This response does not support redirection. ' );
251
257
}
252
258
253
- throw new RuntimeException ('Invalid redirect method " ' .$ this ->getRedirectMethod ().'". ' );
259
+ if (empty ($ this ->getRedirectUrl ())) {
260
+ throw new RuntimeException ('The given redirectUrl cannot be empty. ' );
261
+ }
262
+
263
+ if (!in_array ($ this ->getRedirectMethod (), ['GET ' , 'POST ' ])) {
264
+ throw new RuntimeException ('Invalid redirect method " ' .$ this ->getRedirectMethod ().'". ' );
265
+ }
254
266
}
255
267
}
0 commit comments