Do you know how to get GET or POST request arguments from the HTTP request? If not, let's check it out.
In case you don't know how to create a controller, please check this blogpost.
The following code will be our structure.
<?php declare(strict_types=1);
namespace MatheusGontijo\HelloWorld\Controller;
use Shopware\Core\Framework\Routing\Annotation\RouteScope;
use Shopware\Core\Framework\Routing\Annotation\Since;
use Shopware\Storefront\Controller\StorefrontController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
/**
* @RouteScope(scopes={"storefront"})
*/
class HelloWorldController extends StorefrontController
{
/**
* @Route("/hello-world", name="frontend.helloworld", methods={"GET","POST"})
*/
public function helloworld(Request $request)
{
//
// code will be inserted here
//
}
}
POST
and GET
methods work similarly. I'll give an example with GET
, but POST
request don't have the params passed on the url.
GET
request: /hello-world?firstname=Matheus&lastname=Gontijo
$request->query->all();
Result:
Array
(
[firstname] => Matheus
[lastname] => Gontijo
)
$request->query->get('firstname');
// result: Matheus
$request->query->get('lastname');
// result: Gontijo
Let's say the param age
is not passed, then you could set a default.
$request->query->get('age');
// if age is passed, then it will be the age from the parameter, let's say "30"
// result: 30
$request->query->get('age', 'None');
// but in case age is NOT passed, then it will be the age from the default parameter, let's say "None"
// result: None
Hope you enjoyed the blogpost ;- )