-
Endpoint für API
Hallo zusammen,
ich steh ein bisschen auf dem Schlauch. Für eine API muss ich in Contao einen Endpoint erstellen und die übergebenen Post-Daten verarbeiten. Ich habe einen Controller erstellt, den ich über die Route auch erreichen kann. Ich scheitere jetzt aber daran, die Postdaten (json) auszulesen. :rolleyes:
-
-
ok. wenn ich das request object übergeben lasse, existiert es auch. Aber wo finde ich die per POST übergebenen Daten?
PHP-Code:
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
/**
* Handles front end routes.
* path: /stwebhooks/apiAction.
* @Route("/stwebhooks", defaults={"_scope" = "webhook", "_token_check" = false})
*/
class FrontendController extends AbstractController
{
/**
* Renders the details content.
*
* @Route("/api", name="webhook_api", methods={"POST"})
*/
public function apiAction(Request $request) : Response
{
$this->container->get('contao.framework')->initialize();
$ipAddrArr=array(
'1.1.1.111',
'2.2.2.222',
'3.3.3.333',
'xxx.xxx.xxx.xxx');
$ipValidation = false; // allow list of ip adresses only
$remoteAddr = getenv("REMOTE_ADDR") ;
if ($ipValidation && !in_array($remoteAddr, $ipAddrArr))
{
exit('not allowed!');
}
$data = $request->attributes->all();
print_r($data);
die();
}
}
-
-
Ich habs hinbekommen....statt
PHP-Code:
$data = $request->attributes->all();
muss es heißen
PHP-Code:
$data = json_decode($request->getContent(), true);
;)