braunstetter / control-panel-bundle
一组可扩展的模板,用于构建优秀的控制面板,以便构建您的软件系统。
v0.2.35
2022-06-25 09:10 UTC
Requires
- php: ^8.0
- braunstetter/assets-push-bundle: ^0.2
- braunstetter/template-hooks-bundle: ^0.2
- symfony/asset: ^5.3|^6.0
- symfony/form: ^5.3|^6.0
- symfony/twig-bundle: ^5.3|^6.0
Requires (Dev)
- phpunit/phpunit: ^9.5
- symfony/framework-bundle: ^4.4|^5.0|^6.0
- symfony/test-pack: ^1.0
- dev-main
- v0.2.35
- v0.2.34
- v0.2.33
- v0.2.32
- v0.2.31
- v0.2.30
- v0.2.29
- v0.2.28
- v0.2.27
- v0.2.26
- v0.2.25
- v0.2.24
- v0.2.23
- v0.2.22
- v0.2.21
- v0.2.20
- v0.2.19
- v0.2.18
- v0.2.17
- v0.2.16
- v0.2.15
- v0.2.14
- v0.2.13
- v0.2.12
- v0.2.11
- v0.2.10
- v0.2.9
- v0.2.8
- v0.2.7
- v0.2.6
- v0.2.5
- v0.2.4
- v0.2.3
- v0.2.2
- v0.2.1
- v0.2.0
- v0.1.1
- v0.1.0
This package is auto-updated.
Last update: 2024-09-25 13:59:28 UTC
README
有时您不想完全承诺一个完整的后台系统。但您希望有一个美观的后台面板结构,以便进行扩展。
安装
composer require braunstetter/control-panel-bundle yarn install --force
内部包含
模板
- layouts/base.html.twig(移动结构 - 但为空)
- base.html.twig(包含具有模板钩子的结构)
您可以扩展这些模板,也可以使用braunstetter/template-hooks-bundle,其中的钩子用于 base.html.twig
文件内部。
表单类型
此包包含几个自定义表单类型。为了展示您如何使用它,我想给您一个示例。
为了使这可行,您需要一个具有标题和描述属性的 OrangePuppy
实体。
示例 - 运行一个完整的控制面板
创建一个新的 symfony 项目。
symfony new --full my_project composer install
设置数据库
对于这个简单的测试,只需将 .env
文件更改为使用 sqlite 数据库
DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db" # DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=5.7" #DATABASE_URL="postgresql://db_user:db_password@127.0.0.1:5432/db_name?serverVersion=13&charset=utf8" ###< doctrine/doctrine-bundle ###
symfony console doctrine:database:create
创建带有路由的控制器
symfony console make:controller Choose a name for your controller class (e.g. DeliciousElephantController): > SiteController created: src/Controller/SiteController.php created: templates/site/index.html.twig Success!
编辑 twig 模板
更改 templates/site/index.html.twig
{% extends '@ControlPanel/base.html.twig' %} {% block title %}Hello SiteController!{% endblock %} {% block content %}
注意:别忘了将块名称从
body
更改为content
启动 web 服务器并访问您的控制面板
symfony serve -d
现在您可以通过访问 /site
url 来查看结果。
页面类型示例
<?php namespace App\Form; use App\Entity\OrangePuppy; use Braunstetter\ControlPanel\Form\PageType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\FormInterface; use Symfony\Component\OptionsResolver\OptionsResolver; class OrangePuppyType extends PageType { public function buildBodyForm(FormInterface $builder, array $options) { $builder ->add('title'); } public function buildSidebarForm(FormInterface $builder, array $options) { $builder->add('sideBox', TestBoxType::class); } public function buildToplineRightForm(FormInterface $builder, array $options) { $builder->add('submit', SubmitType::class, ['attr' => ['class' => 'cp-button-default']]); } public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ 'title' => 'Create a new OrangePuppy', 'data_class' => OrangePuppy::class, ]); } public function getParent() { return PageType::class; } }
以下是解释。
- 扩展
Braunstetter\ControlPanel\Form\PageType;
(用于额外的构建方法) - 将标题设置为选项(在创建表单时提交选项,或在
configureOptions
方法中设置) - 重写
public function getParent()
以获取视图变量和主题块前缀继承(基本上使样式工作;) - 使用公共
buildBodyForm
、buildSidebarForm
、buildToplineRightForm
、buildToplineLeftForm
方法来填充表单。
cp-button-default
是此包提供的自定义按钮类。
左侧美观的菜单由braunstetter/menu-bundle提供。
BoxType
您可能想知道美观的侧边栏框是从哪里来的。您可能已经注意到了 buildSidebarForm
方法中的 TestBoxType
。这是此包提供的第二个自定义 FormType。以下是一个示例
<?php namespace App\Form; use Braunstetter\ControlPanel\Form\BoxType; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; class TestBoxType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('description', TextType::class); } public function getParent(): string { return BoxType::class; } }
这次您只需重写 getParent()
并返回 Braunstetter\ControlPanel\Form\BoxType
。(因为此表单类型没有特殊方法。)
BoxType 默认启用了 symfony 的 inherit_data 选项。这样您就可以像直接在父类中放置表单一样使用它。