temian/laravelpoll

用于创建调查的 Laravel 扩展包

dev-master 2023-04-29 10:17 UTC

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。