. */ declare(strict_types=1); namespace SP\Modules\Web\Controllers; use SP\Domain\Common\Attributes\Action; use SP\Domain\Common\Dtos\ActionResponse; use SP\Domain\Common\Enums\ResponseType; use SP\Html\DataGrid\DataGridInterface; use function SP\__u; /** * Class SearchGridControllerBase */ abstract class SearchGridControllerBase extends ControllerBase { /** * @return ActionResponse */ #[Action(ResponseType::JSON)] public function searchAction(): ActionResponse { if (!$this->acl->checkUserAccess($this->getAclAction())) { return ActionResponse::error(__u('You don\'t have permission to do this operation')); } $this->view->addTemplate('datagrid-table', 'grid'); $this->view->assign('index', $this->request->analyzeInt('activetab', 0)); $this->view->assign('data', $this->getSearchGrid()); return ActionResponse::ok('', ['html' => $this->render()]); } abstract protected function getAclAction(): int; abstract protected function getSearchGrid(): DataGridInterface; }