44
55use Symfony \Bundle \FrameworkBundle \Controller \AbstractController ;
66use Symfony \Component \HttpFoundation \Request ;
7+ use Symfony \Component \HttpFoundation \Response ;
78
89/**
910 * Class AbstractWPAjaxController
@@ -23,9 +24,44 @@ class AbstractWPAjaxController extends AbstractController
2324 */
2425 public function __construct (?Request $ request = null )
2526 {
26- $ this ->request = $ request ;
2727 if ($ request === null ) {
2828 $ this ->request = Request::createFromGlobals ();
2929 }
30+
31+ $ action = (string )$ this ->request ->query ->get ('action ' );
32+ $ routeData = WpAjaxInitializer::route ($ action );
33+
34+ $ this ->request ->attributes ->set ('methods ' , $ routeData ->getMethods ());
35+ $ this ->request ->attributes ->set ('requirements ' , $ routeData ->getRequirements ());
36+ $ this ->request ->attributes ->set ('defaults ' , $ routeData ->getDefaults ());
37+ $ this ->request ->attributes ->set ('options ' , $ routeData ->getOptions ());
38+ }
39+
40+ /**
41+ * Валидный тип запроса?
42+ *
43+ * @param string $message Сообщение.
44+ * @param integer $statusCode HTTP status code.
45+ *
46+ * @return void
47+ */
48+ protected function checkTypeRequest (string $ message = '' , int $ statusCode = 400 ) : void
49+ {
50+ $ methods = $ this ->request ->attributes ->get ('methods ' );
51+ if (!$ methods ) {
52+ return ;
53+ }
54+
55+ $ requestMethod = $ this ->request ->getMethod ();
56+ if (!in_array ($ requestMethod , $ methods , false )) {
57+ $ response = new Response (
58+ $ message ,
59+ $ statusCode
60+ );
61+
62+ $ response ->send ();
63+
64+ wp_die ();
65+ }
3066 }
31- }
67+ }
0 commit comments