beta/base.vote
最新稳定版本:1.0.3
Composer 安装命令:
composer require beta/base.vote
包简介
Simple wrapper bitrix vote
README 文档
README
Установка
composer require beta/base.vote
Данный пакет предоставляет функционал для описания опросов/голосований, разрабатывался как обёртка модуля vote CMS Bitrix. Не является полной реализацией, отсуствует имплементация сервисов:
- VoteServiceInterface - предназначен для работы со схемой опроса (сохранение схемы, запрос схем(ы) по заданным критериям)
- VoteResultServiceInterface - предназначен для работы с результатами опроса (сохранение результата, запрос результатов по заданным критериям)
Для работы с опросами задействованы следующие интерфейсы:
- VoteSchemaInterface - интерфейс схемы опроса, содержит: название и описание. Так же предоставляет возможность оперировать с произвольными свойствами через методы getProp(string $key) и setProp(string $key, $value). Предоставляет доступ с вопросам.
- QuestionInterface - интерфейс вопроса. содержит: текст вопроса, признак необходимости обязательного ответа, тип вопроса (произвольное целое число, может варьироваться в зависимости от реализации). Предоставляет доступ к вариантам ответа, варианты ответа обязательны для любых вопросов, даже для тех которые требуют ответ в произвольной форме. Предоставляет возможность оперировать с произвольными свойствами через методы getProp(string $key) и setProp(string $key, $value).
- AnswerVariantInterface - интерфейс варианта ответа, содержит: текст ответа и тип варианта ответа (произвольное целое число, может варьироваться в зависимости от реалзации). Предоставляет возможность оперировать с произвольными свойствами через методы getProp(string $key) и setProp(string $key, $value).
Интерфейсы для работы с результатом опроса:
- VoteResultInterface - интерфейс результата опроса, предоставляет доступ к ответам на вопросы. Так же предоставляет возможность оперировать с произвольными свойствами через методы getProp(string $key) и setProp(string $key, $value).
- AnswerResultInterface - интерфейс ответа на вопрос, содержит ссылку на вариант ответа - AnswerVariantInterface и произвольный текст ответа. Предоставляет возможность оперировать с произвольными свойствами через методы getProp(string $key) и setProp(string $key, $value).
Схема опроса построена в виде дерева, каждый дочений элемент имеет доступ к родителю:
VoteSchemaInterface <-> QuestionInterface <-> AnswerVariantInterface
Результат опроса:
VoteResultInterface <-> AnswerResultInterface -> AnswerVariantInterface
Пример создания опроса:
use Base\Vote\Interfaces\VoteServiceInterface; use Base\Vote\QuestionType; use Base\Vote\AnswerVariantType; use Base\Vote\VoteSchema; /** * @var VoteServiceInterface $voteService **/ $voteService = new SomeImplementationVoteService(); $newVoteSchema = VoteSchema::createNewVote('Новый опрос', 'Некоторое описание для опроса'); $question1 = $newVoteSchema->createQuestion('Что вы думаете по поводу нового API для опросов?', QuestionType::RADIO); $question1->createAnswerVariant('Ну такое...'); $question1->createAnswerVariant('Это что-то невероятное'); $question1->createAnswerVariant('Как это теперь развидеть?'); $question1->createAnswerVariant('Некоторое описание', AnswerVariantType::TEXT); $question2 = $newVoteSchema->createQuestion('Ещё один неоднозначный вопрос...', QuestionType::CHECKBOX); $question2->createAnswerVariant('Вариант 1'); $question2->createAnswerVariant('Вариант 2'); $question2->createAnswerVariant('Вариант 3'); $question2->createAnswerVariant('Вариант 4'); $result = $voteService->saveVote($newVoteSchema);
Пример добавления результата опроса:
use Base\Vote\Interfaces\VoteResultServiceInterface; use Base\Vote\Interfaces\QuestionInterface; use Base\Vote\VoteResult; /** * @var VoteServiceInterface $voteService **/ $voteService = new SomeImplementationVoteService(); /** * @var VoteServiceInterface $voteService **/ $voteResultService = new SomeImplementationVoteResultService(); $voteSchema = $voteService->getVoteSchemaById(1); $newVoteResult = new VoteResult($voteSchema); // Добавление ответа $newVoteResult->createAnswerResultByTitle( 'Планируете ли вы дополнительно обучаться профильной специальности?', 'да' ); // Добавление того же ответа другим методом $question = $voteSchema->getQuestionByTitle('Планируете ли вы дополнительно обучаться профильной специальности?'); $answerVariant = $question instanseof QuestionInterface ? $question->getAnswerVariantByTitle('да') : null; $newVoteResult->createAnswerResult($answerVariant); $result = $voteResultService->saveVoteResult($newVoteResult);
统计信息
- 总下载量: 75
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 2
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-10-31