larapoll

A Laravel package to manage your polls

Github星跟蹤圖

Larapoll

A Laravel package to manage your polls

Installation:

First, install the package through Composer.

composer require inani/larapoll 

You can skip the next two steps

Then include the service provider inside config/app.php.

'providers' => [
    ...
    Inani\Larapoll\LarapollServiceProvider::class,
    ...
];


'aliases' => [
        ...
        'PollWriter' => Inani\Larapoll\PollWriterFacade::class,
        ...
];

Publish migrations, and migrate

php artisan vendor:publish
php artisan migrate

Setup a Model

To setup a model all you have to do is add (and import) the Voter trait.

use Inani\Larapoll\Traits\Voter;
class User extends Model
{
    use Voter;
    ...
}

Creating, editing and closing polls

Create poll

// 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

attach and detach options to a poll

// 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

Lock a poll

$bool = $poll->lock();

Unlock a closed poll

$bool = $poll->unLock();

Remove a poll

All related options and votes will be deleted once the Poll is removed

$bool = $poll->remove();

Voting

Making votes

// a voter(user) picks a poll to vote for
// only ids or array of ids are accepted
$voter->poll($poll)->vote($voteFor->getKey());

Result of votes

// get results unordered
$poll->results()->grab();
// get results in order (desc)
$poll->results()->inOrder();

CRUD HANDLER

LaraPoll ships with a UI a system to manage polls, very easy and fast. you need practically nothing to start using it.
Please visit the link for the explantation of the interface.

Set up the admin middleware's name

A larapoll_config.php file will be added where you can put the name of the middleware used to protect the access and other things like pagination and prefix to protect your routes
Add this line in the .env too

LARAPOLL_ADMIN_AUTH_MIDDLEWARE = auth
LARAPOLL_ADMIN_AUTH_GUARD = web
LARAPOLL_PAGINATION = 10
LARAPOLL_PREFIX = Larapoll

FRONT END USE

With Larapoll its easy to integrate a poll for users to vote, you only have to specify two things

  • the ID of the poll
{{ PollWriter::draw(Poll::find(77)) }}

Override views

You can override the views related to the results page and both pages checkbox/radio via the same larapoll_config.php file in the config folder.

Route of the vote action

{{ route('poll.vote', $id) }}

Data passed to result view

  • $question : the question of the poll
  • $options : array of objects holding (name, percent, votes).

Data passed to the poll checkbox/radio

  • $question : the question
  • $options : holding the name and id of the option.

主要指標

概覽
名稱與所有者akiyamaSM/larapoll
主編程語言PHP
編程語言PHP (語言數: 2)
平台
許可證MIT License
所有者活动
創建於2017-01-21 13:18:44
推送於2022-10-07 10:37:59
最后一次提交2022-02-04 09:30:50
發布數11
最新版本名稱3.1 (發布於 )
第一版名稱1.0 (發布於 )
用户参与
星數259
關注者數15
派生數61
提交數197
已啟用問題?
問題數58
打開的問題數6
拉請求數61
打開的拉請求數0
關閉的拉請求數2
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?