temian / laravelpoll
用于创建调查的 Laravel 扩展包
dev-master
2023-04-29 10:17 UTC
Requires
- illuminate/support: ~5|~6|~7|~8|~9|~10
Requires (Dev)
- fzaninotto/faker: ~1.4
- phpunit/phpunit: ~4.0
This package is auto-updated.
Last update: 2024-09-29 13:18:48 UTC
README
用于管理调查的 Laravel 扩展包
安装
首先,通过 Composer 安装该包。
composer require inani/larapoll
您可以跳过接下来的两个步骤
然后在 config/app.php 中包含服务提供者。
'providers' => [ ... Inani\Larapoll\LarapollServiceProvider::class, ... ]; 'aliases' => [ ... 'PollWriter' => Inani\Larapoll\PollWriterFacade::class, ... ];
发布迁移,并执行迁移
php artisan vendor:publish php artisan migrate
设置模型
要设置模型,您只需添加(并导入)Voter 特性。
use Inani\Larapoll\Traits\Voter; class User extends Model { use Voter; ... }
创建、编辑和关闭调查
创建调查
// create the question $poll = new Poll([ 'question' => 'What is the best PHP framework?' ]); // attach options and how many options you can vote to // more than 1 options will be considered as checkboxes $poll->addOptions(['Laravel', 'Zend', 'Symfony', 'Cake']) ->maxSelection() // you can ignore it as well ->generate(); $poll->isRadio(); // true $poll->isCheckable(); // false $poll->optionsNumber(); // 4
将选项附加到调查并从调查中分离
// to add new elements $bool = $poll->attach([ 'Yii', 'CodeIgniter' ]); $poll->optionsNumber(); // 6 // to remove options(not voted yet) $option = $poll->options()->first(); // get first option $bool = $poll->detach($option); $poll->optionsNumber(); // 5
锁定调查
$bool = $poll->lock();
解锁已关闭的调查
$bool = $poll->unLock();
删除调查
一旦删除调查,所有相关选项和投票都将被删除
$bool = $poll->remove();
投票
制作投票
// a voter(user) picks a poll to vote for // only ids or array of ids are accepted $voter->poll($poll)->vote($voteFor->getKey());
投票结果
// get results unordered $poll->results()->grab(); // get results in order (desc) $poll->results()->inOrder();
CRUD 处理器
LaraPoll 附带一个用于管理调查的 UI 系统,非常简单快捷。您几乎不需要做任何事情就可以开始使用它。请访问此链接了解界面的解释。
设置管理员中间件的名称
将在 larapoll_config.php 文件中添加,您可以在此处输入用于保护访问和其他事物的中间件名称,例如分页和路由前缀以保护您的路由。同时,在 .env 文件中添加此行
LARAPOLL_ADMIN_AUTH_MIDDLEWARE = auth LARAPOLL_ADMIN_AUTH_GUARD = web LARAPOLL_PAGINATION = 10 LARAPOLL_PREFIX = Larapoll
前端使用
使用 Larapoll,很容易为用户集成一个用于投票的调查,您只需指定两件事
- 调查的 ID
{{ PollWriter::draw(Inani\Larapoll\Poll::find(77)) }}
覆盖视图
您可以通过配置文件夹中的相同 larapoll_config.php 文件覆盖与结果页面相关的视图以及复选框/单选按钮页面。
投票操作的路径
{{ route('poll.vote', $id) }}
传递给结果视图的数据
- $question : 投票的问题
- $options : 包含(名称、百分比、投票)的对象数组。
传递给调查复选框/单选按钮的数据
- $question : 问题
- $options : 包含选项名称和 ID。