bigfoot / core-bundle
Bigfoot 核心包
Requires
- php: >=5.4
- friendsofsymfony/jsrouting-bundle: ~1.1
- knplabs/knp-menu-bundle: 2.0.*@dev
- knplabs/knp-paginator-bundle: ~2.4.1
- liip/imagine-bundle: ~0.6
- symfony/framework-bundle: ~2.5
- dev-master / 4.0.x-dev
- 3.0.x-dev
- 2.2.x-dev
- 2.2.2
- v2.2.1
- v2.2.0
- v2.1.1
- v2.1.0
- v2.0.0
- 1.0.1
- 1.0.0
- dev-feature-traductions-spreadsheet
- dev-fix-translation
- dev-form-by-tab
- dev-fix-insights
- dev-translatable-label-validation
- dev-filter-by-date
- dev-undeprecatization
- dev-feat-translations
- dev-bigfoot_labels
- dev-add-date-filter
- dev-add-getActionUrl
- dev-add-generateEnvUrl
- dev-configurable_dashboard
This package is auto-updated.
Last update: 2024-08-29 03:53:30 UTC
README
这是 Bigfoot 管理界面的核心包。提供核心功能和助手,通过包来集成 BackOffice 功能。
安装
使用 composer
php composer.phar require bigfoot/core-bundle
在您的 app/AppKernel.php 文件中注册此包
$bundles = array(
...
new Bigfoot\Bundle\CoreBundle\BigfootCoreBundle(),
...
);
使用方法
管理界面现在可在 /admin 下访问。目前什么也不做。添加 Bigfoot 包或创建您自己的包来真正开始!
如何创建小部件
创建一个继承自 Bigfoot\Bundle\CoreBundle\Model\AbstractWidget
的类。在您的新类中定义方法 'renderContent()'。此方法必须返回您小部件的 HTML 代码。
在 widget_backoffice 表中添加一条记录,并使用相应的值:名称:类的全名,标题:小部件头部显示的标题,此字段是可翻译的
在 widget_backoffice_parameter 表中添加 2 条记录。一条记录的值如下:名称:order,值:您希望小部件显示的顺序号,widget_id:widget_backoffice 表中您的小部件的记录 ID,user_id:(可选)如果定义,此参数将仅为此用户使用
另一条记录的值如下:名称:width,值:小部件使用的列数,widget_id:widget_backoffice 表中您的小部件的记录 ID,user_id:(可选)如果定义,此参数将仅为此用户使用
如何覆盖 Symfony 路由器
将以下行添加到您的前端配置中
bigfoot_core: routing: replace_symfony_router: true routers_by_id: router.default : 300 bigfoot_core.router: 400
BigfootFile 注解
BigfootFile 使用 symfony 的文件上传系统,具有一个文件的两个属性。
@Bigfoot\Bundle\CoreBundle\Annotation\Bigfoot\File:将此注解应用于表示表单字段的属性。使用其 filePathProperty 选项(必需)来连接另一个属性。
不要忘记创建一个 "updated" 字段,并在使用 PreFlush 监听器更新之前更新它。否则,如果表单中没有其他更改,文件将不会更新。
示例
<?php namespace Entity; use Doctrine\ORM\Mapping as ORM; use Bigfoot\Bundle\CoreBundle\Annotation\Bigfoot; /** * @ORM\Table(name="items") * @ORM\HasLifecycleCallbacks() */ class Item { /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var string * @ORM\Column(name="path", type="string", length=255, nullable=true) */ private $path /** * @Assert\File(maxSize="6000000") * @Bigfoot\File(filePathProperty="path") */ public $file; /** * @var string * @ORM\Column(name="updated", type="datetime", nullable=true) */ private $updated; /** * @ORM\PreFlush() */ public function refreshUpdated() { if ($this->file) { $this->updated = new \DateTime("now"); } } }
在您的表单中使用它
class ItemType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('file', 'bigfoot_file', array( 'required' => false, 'label' => 'Your file', 'filePathProperty' => 'path', 'deleteRoute' => 'entity_delete_file' )); } }
如果您没有定义任何删除路由,则不会显示删除链接
在前端获取文件
第二个参数(默认为 false)定义了过滤器是否返回绝对路径
{{ item|bigfoot_file('path', false) }}
在 CRUD 列表页面生成 CSV
将方法 getCsvFields 添加到您扩展的 CrudController 控制器中
protected function getCsvFields() { return array( 'name' => array( 'label' => 'Name' ), 'region.name' => array( 'label' => 'Region', ), 'services.codeDetail' => array( 'label' => 'Services', 'multiple' => true ) ); }
如果您想显示实体字段,请使用
protected function getCsvFields() { return array( 'name' => array( 'label' => 'Name' ), ....
如果您想显示外部实体字段,请使用
protected function getCsvFields() { return array( 'region.name' => array( 'label' => 'Region' ), .... );
如果您想显示 OneToMany 关系字段,请使用
protected function getCsvFields() { return array( 'services.codeDetail' => array( 'label' => 'Services', 'multiple' => true ) .... );
通过按标签设置表单来提高 '编辑表单' 的速度
将方法 getFormTypes 添加到您扩展的 CrudController 控制器中,它返回一个包含数组的数组,其中包含 'label'(标签的标签)和 'form'(FormType 服务的名称)。
protected function getFormTypes() { return array( array( 'label' => 'Hotel', // Label of the first tab 'form' => 'rc_hotel_0' // Service name of the HotelType ), array( 'label' => 'Rooms', // Label of the second tab 'form' => 'rc_hotel_1' // Service name of the RoomsType ) ); }
确保您已将索引参数添加到控制器的 editAction 中
public function editAction(Request $request, $id, $index = null) { return $this->doEdit($request, $id, $index); }
就是这样!