Токен не может быть нулевым при создании экземпляра Product Query Builder. / Запрос Акенео 2


person Paul    schedule 20.06.2018    source источник
comment
Не забудьте указать свою версию Akeneo PIM, ответ, который вы получите, может сильно различаться в зависимости от используемой вами версии :)   -  person grena    schedule 21.06.2018


Ответы (2)


Чтобы завершить ответ Жюльена, обратите внимание, что эта ошибка возникает только в том случае, если вы используете Enterprise Edition (EE). Действительно, в EE мы украшаем обычный product_query_builder_factory для применения разрешения.

Если вы не хотите применять разрешение (и не использовать какой-либо токен), вы можете использовать pim_catalog.query.product_query_builder_factory_without_permission:

<?php

require __DIR__.'/vendor/autoload.php';

$kernel = new AppKernel('dev', true);
$kernel->boot();

$pqbFactory =  $kernel->getContainer()->get('pim_catalog.query.product_query_builder_factory_without_permission');
$pqb = $pqbFactory->create(['default_locale' => 'fr_FR', 'default_scope' => 'ecommerce']);  // you won't have any error
person grena    schedule 21.06.2018

PQB должен иметь аутентифицированного пользователя, чтобы иметь возможность применять правильные фильтры к результатам. Чтобы аутентифицировать пользователя в вашей команде, вы можете воспользоваться получить команду продукта. Мы просто берем аргумент --username и вручную добавляем его в хранилище токенов.

$userManager = $this->getContainer()->get('pim_user.manager');
$user = $userManager->findUserByUsername($username);

if (null === $user) {
    $output->writeln(sprintf('<error>Username "%s" is unknown<error>', $username));

   return false;
}

$token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
$this->getTokenStorage()->setToken($token);
person Julien Sanchez    schedule 20.06.2018