Я пытаюсь создать пользовательского избирателя, например https://symfony.com/doc/master/bundles/SonataAdminBundle/reference/security.html#create-a-custom-voter-or-a-custom-permission-map, но у меня есть эта ошибка
моя декларация службы похожа
security.acl.voter.form_permission:
class: App\Security\FormAclVoter
arguments:
- "@security.acl.provider"
- "@security.acl.object_identity_retrieval_strategy"
- "@security.acl.security_identity_retrieval_strategy"
- "@security.acl.permission.map"
- "@logger"
tags:
- { name: monolog.logger, channel: security }
- { name: security.voter, priority: 255 }
public: false
и мой избиратель:
namespace App\Security;
use App\Entity\Form;
use App\Entity\User;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Acl\Voter\AclVoter;
class FormAclVoter extends AclVoter
{
const EDIT = 'edit';
protected function supports($attribute, $subject)
{
if (!in_array($attribute, [self::EDIT])) {
return false;
}
if (!$subject instanceof Form) {
return false;
}
return true;
}
protected function voteOnAttribute($attribute, $subject, TokenInterface $token)
{
$user = $token->getUser();
if (!$user instanceof User) {
return false;
}
$form = $subject;
switch ($attribute) {
case self::EDIT:
return $this->canEdit($form);
}
throw new \LogicException('This code should not be reached!');
}
private function canEdit(Form $form)
{
return is_null($form->getNbUsed());
}
} Я не знал, почему у меня есть эта ошибка, у меня есть все необходимые аргументы в моей декларации обслуживания thx