gravity-cms/cms-bundle

该软件包已被废弃且不再维护。没有建议替代软件包。

Gravity CMS Bundle

dev-master 2016-07-02 16:56 UTC

This package is auto-updated.

Last update: 2021-09-10 20:15:32 UTC


README

此软件包是 Gravity CMS 核心代码。

什么是 GravityCMS?

Gravity 是 SonataCMS 的扩展,提供了一种通过简单的 YAML 配置创建节点实体和字段的便捷方法。

此软件包包含什么?

此软件包处理核心功能

  • 节点管理(管理、路由、字段、搜索)
  • 字段管理(管理)
  • 表单助手

节点和字段是什么?

节点是一个直接解析到 URL 的实体,例如页面或博客文章。字段是用户在节点中输入的任何类型的数据。

In Gravity,一个字段有一个 Definition 类和一个 Widget 类。Widget 类将处理字段在 CRUD 表单上的显示方式。

好的,那么它是如何工作的呢?

假设我们有一个 Page 实体。页面将有一个 titlebody 和一个 image(图像字段需要 GravityMediaBundle,但原理相同)。所以,首先,我们需要创建我们的实体

<?php

namespace Acme\DemoBundle\Entity;

use Gravity\CmsBundle\Entity\Node;    
    
/**
 * @ORM\Entity
 */
class Page extends Node 
{
    protected $title;
    
    protected $body;
    
    protected $image;
    
    // getters and setters
}

然后,我们在 Resources/config/gravity/Page.node.yml 中创建我们的映射文件

routing:
  path: /{title}
  extendable: true

search:
  handler: Gravity\CmsBundle\Search\Handler\NodeHandler

fields:
  title:  
    type: text
    options: 
      limit: 1
      required: true
      char_min: 10
    widget:
      type: text.unformatted
      options: ~
      
  body:
    type: text
    options:
      limit: 1
      required: true
      char_min: 100
      char_max: 10000
    widget:
      type: text.formatted
      options:
        default: 'Default Text'

  image:
    type: media
    options:
      limit: 1
    widget:
      limit: 1
      required: true
      entity: Gravity\MediaBundle\Entity\Media
      provider: sonata.media.provider.image
      provider_context: default
    widget:
      type: gravity.media
      options:
        image_preview: big

然后运行

./app/console cache:clear
./app/console doctrine:schema:update --force

就这样!当你进入你的管理仪表板时,你会看到新字段已显示并准备好编辑。