survos/tabler-bundle
Composer 安装命令:
composer require survos/tabler-bundle
包简介
Add some tools and resources to a Symfony 7.4/8 application, based on Tabler (tabler.io)
关键字:
README 文档
README
NOTE: During Dec 2025 development, bundle is in its own repo, NOT the mono-repo!
composer config repositories.survos_admin_bundle '{"type": "vcs", "url": "git@github.com:survos/SurvosTablerBundle.git"}' composer req survos/tabler-bundle
composer config repositories.survos_tabler_bundle '{"type": "vcs", "url": "git@github.com:survos/SurvosTablerBundle.git"}' composer req survos/tabler-bundle
Survos Tabler Bundle
Derived from survos/bootstrap-bundle, it is tabler-only.
A moderately-opinionated bundle that provides a quick way to get up and running with Symfony.
In particular, it sets up and uses the following:
- Knp Menu for sidebar and top nagivation
Assumptions
While the following can be disabled, by default the bundle assumes you want the following
- Authentication
- A user and an admin role
- Users
Goals
This bundle was created originally to isolate issues with other bundles and to get data on a website as quickly and painlessly as possible.
Requirements
- composer
- PHP 8.4+
- Symfony CLI (for running a local server, creating project, etc.)
Create github Project
-
Create a NEW repository, use lowercase if integrating with heroku
on github.com with no files (no README or license), clone it to some directory and go there.
REPO=tabler-bundle-demo
git clone git@github.com:survos/$REPO.git && cd $REPO
- Create the Symfony Skeleton WITHOUT a git repo, then ADD the repo. Allow recipes
rm -f LICENSE && rm -f README.md && mv .git .. && symfony new --full . --no-git --version=5.4 && mv ../.git . && git checkout . composer config extra.symfony.allow-contrib true
OR if you're using Sqlite.
heroku create $REPO echo "DATABASE_URL=sqlite:///%kernel.project_dir%/var/data.db" > .env.local
We always want some security, so certain routes can be secured. Create a User entity, and then a LoginFormAuthenticator. Tweak AppAuthenciator to return to home after a successful login. Set the MAILER_URL to the default.
bin/console make:user User --is-entity --identity-property-name=email --with-password -n #sed -i "s|public function getEmail| public function getUsername() { return \$this->getEmail(); }\n\n public function getEmail|" src/Entity/User.php sed -i "s|# MAILER_DSN|MAILER_DSN|" .env echo "1,AppAuthenticator,SecurityController,/logout," | sed "s/,/\n/g" | bin/console make:auth sed -i "s|// For example.*;|return new RedirectResponse(\$this->urlGenerator->generate('app_homepage'));|" src/Security/AppAuthenticator.php sed -i "s|throw new \\Exception\('TODO\: provide a valid redirect inside '\.__FILE__\);||" src/Security/AppAuthenticator.php
Optional, since SurvosBaseBundle has this already, formatted for mobile
bin/console make:registration-form
Now install the Survos BaseBundle
composer config minimum-stability dev composer config prefer-stable true composer config repositories.knp_markdown '{"type": "vcs", "url": "git@github.com:tacman/KnpMarkdownBundle.git"}' composer req knplabs/knp-markdown-bundle:dev-symfony6 composer config repositories.survos_admin_bundle '{"type": "vcs", "url": "git@github.com:survos/SurvosAdminBundle.git"}' composer config repositories.survos_base_bundle '{"type": "vcs", "url": "git@github.com:survos/BaseBundle.git"}' composer config repositories.ux-datatable '{"type": "vcs", "url": "git@github.com:tacman/ux-datatable.git"}' composer req tacman/ux-datatable composer require umbrella2/adminbundle php bin/console make:admin:home composer config repositories.cs_fixer '{"type": "vcs", "url": "git@github.com:tacman/PHP-CS-Fixer.git"}' composer config repositories.survos_workflow '{"type": "vcs", "url": "git@github.com:survos/workflow-bundle.git"}' composer config repositories.tabler '{"type": "vcs", "url": "git@github.com:survos/TablerBundle.git"}' composer req survos/base-bundle:"^2.0.3" composer req survos/tabler-bundle:dev-tac composer require symfony/webpack-encore-bundle #echo '@import "~bootstrap/dist/css/bootstrap.min.css";' > assets/styles/app.scss #echo '@import "../../public/bundles/survosbase/volt-dist/css/volt.css";' >>assets/styles/app.scss ## FIRST, initialize SurvosBase, which creates app.scss. Then fix webpack. sed -i "s|//.enableSassLoader()|.enableSassLoader()|" webpack.config.js sed -i "s|import './styles/app.css';|import './styles/app.scss';|" assets/js/app.js yarn install yarn add "@symfony/webpack-encore@^1.0.0" yarn add "@symfony/stimulus-bridge@^2.0.0" yarn add bootstrap@next yarn add datatables.net-bs5 datatables.net-buttons-bs5 datatables.net-scroller datatables.net-scroller-bs5 datatables.net-select-bs5 datatables.net-searchpanes datatables.net-searchpanes-bs5 datatables.net-colreorder datatables.net-colreorder-bs5
Survos Dev only
composer config repositories.survos_base_bundle '{"type": "path", "url": "../Survos/BaseBundle"}'
composer config repositories.geonames '{"type": "path", "url": "../Survos/geonames-bundle"}'
composer config repositories.phpspreadsheet '{"type": "path", "url": "../Survos/phpspreadsheet-bundle"}'
@TODO: recipes!
composer config repositories.multisearch '{"type": "vcs", "url": "git@github.com:tacman/PetkoparaMultiSearchBundle.git"}'
repositories.captcha '{"type": "vcs", "url": "git@github.com:cyrilverloop/symfony-captcha-bundle.git"}'
composer config repositories.git-survosbase '{"type": "vcs", "url": "https://github.com/survos/BaseBundle.git"}'
composer config repositories.git-geonames '{"type": "vcs", "url": "https://github.com/survos/geonames-bundle.git"}'
composer config repositories.flowdemo '{"type": "path", "url": "../Survos/../CraueFormFlowDemoBundle"}'
composer config repositories.social_post_bundle '{"type": "path", "url": "../Survos/social-post-bundle"}'
composer config repositories.social_post_bundle '{"type": "vcs", "url": "https://github.com/tacman/social-post-bundle"}'
# this is needed because it creates MAILER_DSN, which isn't created otherwise
# composer req mail
composer req knplabs/knp-menu-bundle:"^3.0@dev"
composer req survos/base-bundle:"*@dev"
phpstorm .env
OR
Step 1: Initialize Yarn Packages via Survos Init
# creates survos_base.yaml (a recipe would be nicer!)
bin/console survos:init
# edit .env and set MAILER_URL
Ugh, still doesn't work, needs a base menu
# introspection, creates menus, looks for entities, easyadmin, etc.
bin/console survos:configure
# symfony run -d yarn encore dev --watch
Integrating Facebook and other OAuth
Go to https://github.com/knpuniversity/oauth2-client-bundle#step-1-download-the-client-library
e.g.
composer require league/oauth2-facebook
The create an app and enable login: https://developers.facebook.com/apps/
Need a config script that asks for the ID and sets it in .env.local (or Heroku, etc.)
https://developers.facebook.com/apps/558324821626788/settings/basic/
Install and Configure UserBundle (optional)
See [docs/recommended_bundles]
If developing BaseBundle
composer config repositories.survosbase '{"type": "path", "url": "../Survos/BaseBundle"}'
composer req survos/base-bundle:"*@dev"
Normal installation
Install the bundle, then go through the setup to add and configure the tools.
composer req survos/base-bundle
yarn install
xterm -e "yarn run encore dev-server" &
composer req "kevinpapst/adminlte-bundle"
composer require knplabs/knp-menu-bundle
bin/console make:subscriber KnpMenuSubscriber "Survos\BaseBundle\Event\KnpMenuEvent"
bin/console survos:init
bin/console survos:config --no-interaction
bin/console doctrine:schema:update --force
survos:init
First time setup, downloads jquery, bootstrap, etc. Also modifies some yaml files, and creates the first menu.
# config/packages/admin_lte.yaml admin_lte: knp_menu: enable: true routes: adminlte_welcome: app_homepage adminlte_login: app_login adminlte_profile: app_profile
@todo: Generate this Controller and templates?
# config/routes/survos_base.yaml survos_base: {path: /, controller: 'Survos\BaseBundle\Controller\BaseController::base'} # app_homepage: {path: /, controller: 'Survos\BaseBundle\Controller\LandingController::base'} app_logo: {path: /logo, controller: 'Survos\BaseBundle\Controller\BaseController::logo'} app_profile: {path: /profile, controller: 'Survos\BaseBundle\Controller\BaseController::profile'} # profile: {path: /profile, controller: 'Survos\BaseBundle\Controller\LandingController::profile'} # logout: {path: /logout, controller: 'Survos\BaseBundle\Controller\LandingController::logout'} # required if app_profile is used, since you can change the password from the profile app_change_password: {path: /change-password, controller: 'Survos\BaseBundle\Controller\BaseController::changePassword'}
{% extends '@SurvosBaseBundle/layout/default-layout.html.twig' %} {% block page_content %} {{ block('body') }} {% endblock %}
{% block logo_mini %}KPA{% endblock %} {% block logo_large 'KPA Admin' %}
{% block page_title 'KPA Admin' %} {% block page_subtitle 'Songs and Music!' %}
2021 Goal: Remove jQuery
https://tobiasahlin.com/blog/move-from-jquery-to-vanilla-javascript/
use vue or react instead. https://www.smashingmagazine.com/2020/07/desktop-apps-electron-vue-javascript/k
Now install some bundles!
See the details at [Recommended Bundles](docs/recommended-bundles.md)
If you chosen to integrate the userbundle, update the schema and add an admin
bin/console doctrine:schema:update --force
symfony server:start --no-tls
When finished, the application will have a basic base page with top navigation, optionally including login/registration pages. Logged in users with ROLE_ADMIN will also (optionally) have links to easyadmin and api-platform.
Api Platform
@todo: put this in a survos:setup command.
- Expose the API routes (for jsRoutingBundle), and
# config/routes/api_platform.yaml api_platform: resource: . type: api_platform prefix: /api options: expose: true
Create resources.yaml to store the configuration
# api/config/api_platform/resources.yaml App\Entity\User: ~ App\Entity\Location: shortName: 'Location' # optional description: 'A place within a building where inventory item is physically located.' # optional attributes: # optional pagination_items_per_page: 30 # optional normalization_context: groups: ['jstree'] denormalization_context: groups: ['jstree']
Add the resources.yaml directory to the mapping paths
# config/packages/api_platform.yaml api_platform: mapping: paths: - '%kernel.project_dir%/src/Entity' - '%kernel.project_dir%/config/api_platform' # yaml or xml directory configuration] patch_formats: json: ['application/merge-patch+json'] swagger: versions: [3]
Configure the serializer (may need to create the directory)
# config/serializer/serialization.yaml App\Entity\User: attributes: id: groups: ['Default'] email: groups: ['Default'] App\Entity\Song: attributes: title: groups: ['Default']
Customizing the bundle
Deploy to heroku
heroku create $projectName
heroku buildpacks:add heroku/php
heroku buildpacks:add heroku/nodejs
echo "web: vendor/bin/heroku-php-nginx -C heroku-nginx.conf -F fpm_custom.conf public/" > Procfile
heroku buildpacks:add heroku/nodejs
heroku buildpacks:add --index 2 heroku/nodejs
composer config --unset repositories.survosbase && composer update
git commit -m "unset survosbase" . && git push heroku master
https://devcenter.heroku.com/articles/deploying-symfony4 bin/console survos:setup-heroku
alternatives
survos/tabler-bundle 适用场景与选型建议
survos/tabler-bundle 是一款 基于 Twig 开发的 Composer 扩展包,目前已累计 848 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 12 月 30 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「symfony」 「symfony-ux」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 survos/tabler-bundle 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 survos/tabler-bundle 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 survos/tabler-bundle 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Sylius eCommerce administration panel component.
The bundle for easy using json-rpc api on your project
Doctrine Block management made easy
Symfony bundle for the Rekapager library
File input dropzones multiple for Symfony Forms
Symfony UX Table with search, filter and sorting options.
统计信息
- 总下载量: 848
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 25
- 依赖项目数: 8
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-12-30