Skip to content

MetaTagService weird work #8

@firestorm23

Description

@firestorm23

Hi, I installed your bundle. Generation of Sonata SEO tags seems not working due to this code.

public function onControllerFound(FilterControllerEvent $event)
    {
        if (!is_array($controllerData = $event->getController())) {
            return;
        }

        $controllerData = $event->getController();

        if ($controllerData[0] === null) {
            return;
        }

        $method = new \ReflectionMethod($controllerData[0], $controllerData[1]);

        //First we check for an automatic optim
        $annotations = $this->annotationReader->getMethodAnnotations($method);

        if (!empty($annotations)) {
            foreach ($annotations as $annotation) {
                if ($annotation instanceof SEOAnnotation\MetaTag) {
                    $request = $controllerData[0]->getRequest();
                    $controller = $request->get('_controller');
                    $object = $request->get($annotation->value);

                    if (empty($object)) {
                        continue;
                    }

                    $class = new \ReflectionClass($object);

That's Alpixel\Bundle\SEOBundle\Service\MetaTagService on 30-58. The code i'm intetersted is 52-56 line

                    $object = $request->get($annotation->value);

                    if (empty($object)) {
                        continue;
                    } 

                    $class = new \ReflectionClass($object);

This code should get an instance of class to pass it to the repository finder. First I don't get what is

$annotation->value

In annotation this parameter does not have a name and your README does not say what it is
So this parameter should be in request and this is the weirdest thing. In my articleAction in which use your bundle, request only contains slug as input parameter from the router. But your code says that Request should containt entity instance to get it's class and pass it to the repository finder. So I don't get why you use

$annotation->value

instead of just

$annotaion->providerClass

to find right SEO tags pattern. And further and I don't get what is the purpose of $annotation->value parameter.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions