Задать вопрос
@venomphp

Как правильно сделать namespace для BX.ajax.runAction?

Пытаюсь использовать контроллеры битрикса для ajax запроса к своему модулю через BX.ajax.runAction.

В корне модуля лежит .settings.php со следующим содержимым:

return [
    'controllers' => [
        'value' => [
            'namespaces' => [
                '\\Evsyukov\\Main\\Controller' => 'api',
            ],
        ],
        'readonly' => true,
    ],
];


название модуля 'testmodules' далее /lib/controller/test.php
его код
namespace Evsyukov\Main\Controller;


class Book extends Controller {

    public function configureActions()
    {

        return [
            'greet' => [
                'prefilters' => [

                ]
            ]
        ];
    }

   
    public function addBookAction()
    {
        $context = Application::getInstance()->getContext();
        $request = $context->getRequest();
        $arRequest = $request->getPostList()->toArray();

        $this->addbook($arRequest);

    }
}


пытаюсь вызвать так
BX.ajax.runAction('evsyukov:main.api.book.addbook', {}


выходит ошибка There is no configuration in evsyukov.main with 'controllers' value.", code: 0
  • Вопрос задан
  • 869 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@PetrPo
evsyukov:main - вместо этого должно быть название модуля. По соглашениям битрикса самописные модули должны состоять из двух слов разделенных точкой, например evsyukov.testmodules, где первая часть - это условно говоря PARTNER_NAME, а вторая название модуля

Тогда вызов будет выглядеть так:
BX.ajax.runAction('evsyukov:testmodules.api.book.addbook', {});


В этом методе, надо конфигурировать свои экшены, чтобы твой экшен срабатывал в публичке для всех пользователей надо написать так
public function configureActions()
{
	return [
		'addBook' => [
			'prefilters' => [

			],
			'-prefilters' => [
				\Bitrix\Main\Engine\ActionFilter\Authentication::class
			],
		]
	];
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@venomphp Автор вопроса
Решение в комментариях
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы