mirror of
https://github.com/kevinveenbirkenbach/infinito.git
synced 2025-04-16 10:16:22 +02:00
Solved parameter bug
This commit is contained in:
parent
5cbbcb3681
commit
2d51d7647c
@ -26,6 +26,16 @@ use Infinito\Attribut\ClassAttributInterface;
|
|||||||
*/
|
*/
|
||||||
final class LayerController extends AbstractAPIController
|
final class LayerController extends AbstractAPIController
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
const IDENTITY_PARAMETER_KEY = 'identity';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
const LAYER_PARAMETER_KEY = 'layer';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Route(
|
* @Route(
|
||||||
* ".{_format}",
|
* ".{_format}",
|
||||||
|
@ -9,4 +9,13 @@ use FOS\RestBundle\Controller\AbstractFOSRestController;
|
|||||||
*/
|
*/
|
||||||
abstract class AbstractController extends AbstractFOSRestController
|
abstract class AbstractController extends AbstractFOSRestController
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
const FORMAT_PARAMETER_KEY = '_format';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
const LOCALE_PARAMETER_KEY = '_locale';
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ use Symfony\Component\Translation\TranslatorInterface;
|
|||||||
use Infinito\DBAL\Types\RESTResponseType;
|
use Infinito\DBAL\Types\RESTResponseType;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
use FOS\RestBundle\Request\ParameterBag;
|
use FOS\RestBundle\Request\ParameterBag;
|
||||||
|
use Infinito\Controller\AbstractController;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is just a result of refactoring. Feel free to replace it.
|
* This class is just a result of refactoring. Feel free to replace it.
|
||||||
@ -88,7 +89,7 @@ abstract class AbstractEntityMenuSubscriber implements EventSubscriberInterface
|
|||||||
*
|
*
|
||||||
* @return ParameterBag
|
* @return ParameterBag
|
||||||
*/
|
*/
|
||||||
private function getRequestAttributs(Event $event): array
|
protected function getRequestAttributs(Event $event): array
|
||||||
{
|
{
|
||||||
return $this->getCurrentRequest($event)->attributes->get('_route_params') ?? [];
|
return $this->getCurrentRequest($event)->attributes->get('_route_params') ?? [];
|
||||||
}
|
}
|
||||||
@ -102,24 +103,8 @@ abstract class AbstractEntityMenuSubscriber implements EventSubscriberInterface
|
|||||||
private function getRequestAttributsSubstitutedFormat(Event $event, string $format): array
|
private function getRequestAttributsSubstitutedFormat(Event $event, string $format): array
|
||||||
{
|
{
|
||||||
$attributs = $this->getRequestAttributs($event);
|
$attributs = $this->getRequestAttributs($event);
|
||||||
$attributs['_format'] = $format;
|
$attributs[AbstractController::FORMAT_PARAMETER_KEY] = $format;
|
||||||
|
|
||||||
return $attributs;
|
return $attributs;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Event $event
|
|
||||||
*
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
protected function shouldShowFormatSelection(Event $event): bool
|
|
||||||
{
|
|
||||||
foreach (['identity', 'layer'] as $attribut) {
|
|
||||||
if (!key_exists($attribut, $this->getRequestAttributs($event))) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,10 @@ use Infinito\Event\Menu\MenuEvent;
|
|||||||
use Infinito\DBAL\Types\MenuEventType;
|
use Infinito\DBAL\Types\MenuEventType;
|
||||||
use Infinito\Domain\FixtureManagement\FixtureSource\ImpressumFixtureSource;
|
use Infinito\Domain\FixtureManagement\FixtureSource\ImpressumFixtureSource;
|
||||||
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||||
|
use Symfony\Component\EventDispatcher\Event;
|
||||||
|
use Infinito\DBAL\Types\RESTResponseType;
|
||||||
|
use Infinito\DBAL\Types\Meta\Right\LayerType;
|
||||||
|
use Infinito\Controller\API\Rest\LayerController;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author kevinfrantz
|
* @author kevinfrantz
|
||||||
@ -21,6 +25,11 @@ class UserMenuSubscriber extends AbstractEntityMenuSubscriber implements EventSu
|
|||||||
*/
|
*/
|
||||||
const LAYER_GET_ROUTE = 'infinito_api_rest_layer_read';
|
const LAYER_GET_ROUTE = 'infinito_api_rest_layer_read';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
const LAYER_CREATE_ROUTE = 'infinito_api_rest_layer_create';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var TokenStorageInterface
|
* @var TokenStorageInterface
|
||||||
*/
|
*/
|
||||||
@ -50,7 +59,12 @@ class UserMenuSubscriber extends AbstractEntityMenuSubscriber implements EventSu
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
$menu->addChild($this->trans('imprint'), [
|
$menu->addChild($this->trans('imprint'), [
|
||||||
'uri' => '/api/rest/source/'.strtolower(ImpressumFixtureSource::SLUG).'.html',
|
'route' => self::LAYER_GET_ROUTE,
|
||||||
|
'routeParameters' => [
|
||||||
|
'identity' => ImpressumFixtureSource::SLUG,
|
||||||
|
'_format' => RESTResponseType::HTML,
|
||||||
|
'layer' => LayerType::SOURCE,
|
||||||
|
],
|
||||||
'attributes' => [
|
'attributes' => [
|
||||||
'icon' => 'fas fa-address-card',
|
'icon' => 'fas fa-address-card',
|
||||||
],
|
],
|
||||||
@ -141,4 +155,21 @@ class UserMenuSubscriber extends AbstractEntityMenuSubscriber implements EventSu
|
|||||||
MenuEventType::USER => 'onUserMenuConfigure',
|
MenuEventType::USER => 'onUserMenuConfigure',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Event $event
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
private function shouldShowFormatSelection(Event $event): bool
|
||||||
|
{
|
||||||
|
foreach ([LayerController::IDENTITY_PARAMETER_KEY, LayerController::LAYER_PARAMETER_KEY] as $key) {
|
||||||
|
$attributs = $this->getRequestAttributs($event);
|
||||||
|
if (!key_exists($key, $attributs) || '' === $attributs[$key]) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Tests\Integration\Controller;
|
namespace Tests\Functional;
|
||||||
|
|
||||||
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
|
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
@ -8,7 +8,7 @@ use Symfony\Component\HttpFoundation\Request;
|
|||||||
/**
|
/**
|
||||||
* @author kevinfrantz
|
* @author kevinfrantz
|
||||||
*/
|
*/
|
||||||
class RoutesGetStatusIntegrationTest extends KernelTestCase
|
class RoutesReachableFunctionTest extends KernelTestCase
|
||||||
{
|
{
|
||||||
const GET_URLS_STATUS = [
|
const GET_URLS_STATUS = [
|
||||||
'login' => 200,
|
'login' => 200,
|
||||||
@ -16,6 +16,7 @@ class RoutesGetStatusIntegrationTest extends KernelTestCase
|
|||||||
'logout' => 302,
|
'logout' => 302,
|
||||||
'profile/edit' => 302,
|
'profile/edit' => 302,
|
||||||
'spa' => 302,
|
'spa' => 302,
|
||||||
|
'api/rest/source.html' => 200,
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
Loading…
x
Reference in New Issue
Block a user