c975l / gift-voucher-bundle
Bundle to manage gift voucher, their payments and transactions
Fund package maintenance!
buymeacoff.ee/laurentmarquet
Open Collective
Patreon
Installs: 18
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: ^7
- c975l/config-bundle: ^2
- c975l/email-bundle: ^3
- c975l/includelibrary-bundle: ^1
- c975l/payment-bundle: ^3
- c975l/services-bundle: ^1
- c975l/toolbar-bundle: ^1
- cocur/slugify: ^3
- doctrine/doctrine-bundle: ^2
- doctrine/orm: ^2
- endroid/qr-code: ^3
- h4cc/wkhtmltopdf-amd64: ^0
- knplabs/knp-paginator-bundle: ^4
- knplabs/knp-snappy-bundle: ^1
- knplabs/knp-time-bundle: ^1
- symfony/form: *
- symfony/security: *
- twig/twig: ^2
Requires (Dev)
- phpunit/phpunit: ^7
- rector/rector: ^0
- dev-master
- v3.2.1
- v3.2
- v3.1.4.1
- v3.1.4
- v3.1.3
- v3.1.2
- v3.1.1
- v3.1
- v3.0.1
- v3.0
- 2.x-dev
- v2.1.1.2
- v2.1.1.1
- v2.1.1
- v2.1
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0
- 1.x-dev
- v1.15.5
- v1.15.4.1
- v1.15.4
- v1.15.3.1
- v1.15.3
- v1.15.2
- v1.15.1
- v1.15
- v1.14.2
- v1.14
- v1.13.2
- v1.13.1
- v1.13
- v1.12.1
- v1.12
- v1.11.2
- v1.11.1
- v1.11
- v1.10
- v1.9.3
- v1.9.2
- v1.9.1
- v1.9
- v1.8
- v1.7
- v1.6.1
- v1.6
- v1.5
- v1.4.1
- v1.4
- v1.3
- v1.2
- v1.1
- v1.0.1
- v1.0
- v0.1
- dev-dev
This package is auto-updated.
Last update: 2020-03-04 12:46:22 UTC
README
GiftVoucherBundle does the following:
- Allows to create Gift Voucher request form,
- Interfaces with Stripe via c975LPaymentBundle for its payment,
- Creates a PDF of the GiftVoucher and sends it by email,
- Creates a QR Code using QrCodeBundle,
- Allows to use the GiftVoucher via a QrCode plus validation aftewards,
- Integrates with c975LToolbarBundle,
- PDF and Qrcode are NOT stored but created on the fly,
- Joins your Terms of sales as PDF to the email,
The security is provided by a four-letter secret code, included in the QrCode, but not in the displayed Gift-Voucher identifier.
This Bundle relies on the use of c975LPaymentBundle, Stripe and its PHP Library. So you MUST have a Stripe account.
It also recomended to use this with a SSL certificat to reassure the user.
As the Terms of sales MUST be sent to the user with the Gift-Voucher, you MUST provide a Route or url for this PDF file. If you don't have such, you may consider using c975LSiteBundle for its pre-defined models and c975LPageEditBundle for its ability to create a PDF.
You can also give a better user's experience by using Select2 for the selection of GiftVoucher. Simply include it to your layout using
{# jQuery has to be linked before #} {# In your css block #} {{ inc_lib('select2', 'css', '4.*') }} {# In your javascript block #} {{ inc_lib('select2', 'js', '4.*') }}
GiftVoucherBundle dedicated web page.
GiftVoucherBundle API documentation.
Bundle installation
Step 1: Download the Bundle
v3.x works with Symfony 4.x. Use v2.x for Symfony 3.x Use Composer to install the library
composer require c975l/giftvoucher-bundle
Step 2: Configure the Bundle
Check dependencies for their configuration:
- Symfony Mailer
- Doctrine
- KnpPaginatorBundle
- KnpTimeBundle
- QrCodeBundle
- Stripe PHP Library.
- c975LEmailBundle
- c975LPaymentBundle
c975LGiftVoucherBundle uses c975L/ConfigBundle to manage configuration parameters. Use the Route "/gift-voucher/config" with the proper user role to modify them.
Step 3: Enable the Routes
Then, enable the routes by adding them to the /config/routes.yaml
file of your project:
c975_l_giftvoucher: resource: "@c975LGiftVoucherBundle/Controller/" type: annotation prefix: / #Multilingual website use the following #prefix: /{_locale} #defaults: { _locale: '%locale%' } #requirements: # _locale: en|fr|es
Step 4: Create MySql tables
You can use php bin/console make:migration
to create the migration file as documented in Symfony's Doctrine docs OR use /Resources/sql/gift-voucher.sql
to create the tables gift_voucher_available
and gift_voucher_purchased
. The DROP TABLE
are commented to avoid dropping by mistake.
Step 5: Override templates
It is strongly recommended to use the Override Templates from Third-Party Bundles feature to integrate fully with your site.
For this, simply, create the following structure /templates/bundles/c975LGiftVoucherBundle/
in your app and then duplicate the file layout.html.twig
in it, to override the existing Bundle file.
In layout.html.twig
, it will mainly consist to extend your layout and define specific variables, i.e. :
{% extends 'layout.html.twig' %} {% block content %} {% block giftVoucher_content %} {% endblock %} {% endblock %}```
Then in your layout.html.twig
and its dependencies, such as header.html.twig
, footer.html.twig
, navbar.html.twig
, etc. you can use the condition if display == 'pdf'
or if display == 'html'
to choose what to display to which format, and you keep all your data in one place.
Keep in mind that links have to be absolute, or their content included, to be exported (see below).
Routes
The different Routes (naming self-explanatory) available are:
- giftvoucher_display
- giftvoucher_config
- giftvoucher_create
- giftvoucher_modify
- giftvoucher_duplicate
- giftvoucher_delete
- giftvoucher_dashboard
- giftvoucher_purchased
- giftvoucher_offer
- giftvoucher_offer_all
- giftvoucher_use
- giftvoucher_slug
- giftvoucher_help
- giftvoucher_qrcode
You should use Route giftvoucher_offer_all
as an entry point to your Gift-Vouchers.
Twig extensions
You can use the following Twig extensions to display Gift-Vouchers around your web site.
gv_offer_button()
There are different ways to use this extension:
{{ gv_offer_button(GIFTVOUCHER_AVAILABLE_ID) }}
will display a button with defaults styles
{{ gv_offer_button(GIFTVOUCHER_AVAILABLE_ID, 'btn-primary') }}
will display a button with specified styles
{{ gv_offer_button(GIFTVOUCHER_AVAILABLE_ID, 'WHATEVER_STYLE_YOU_HAVE_DEFINED_IN_CSS') }}
will display a button using your own styles
These codes, and other variants, are recalled on the display of Gift-Voucher for Admin users.
gv_offer_link()
You will use this Twig extension to display a link to ofeer the Gift-Voucher
{{ gv_offer_link(GIFTVOUCHER_AVAILABLE_ID) }}
will display a link
This code is recalled on the display of Gift-Voucher for Admin users.
gv_view_all()
This Twig extension will create a view of your Gift-Vouchers. It is used on Resources/views/pages/offerAll.html.twig
template, used by Route giftvoucher_offer_all
.
{{ gv_view_all() }}
will create the view with all your available Gift-Vouchers
{{ gv_view_all(NUMBER_OF_GIFTVOUCHERS_TO_DISPLAY) }}
will create the view with the specified number of your available Gift-Vouchers
{{ gv_view_all(NUMBER_OF_GIFTVOUCHERS_TO_DISPLAY, ORDERED_FIELD) }}
will create the view with the specified number of your available Gift-Vouchers, ordered by the specified field. Values for this field are the ones of the Database Table gift_voucher_available
. You will mostly use id
, object
(default one), slug
, amount
.
If this project help you to reduce time to develop, you can sponsor me via the "Sponsor" button at the top :)