tomatom/atom-bundle

Symfony 扩展包

安装: 954

依赖: 0

建议者: 0

安全: 0

星级: 4

关注者: 3

分支: 2

公开问题: 1

语言:HTML

类型:symfony-bundle

3.0.5 2024-05-29 14:48 UTC

README

Symfony 扩展包,用于轻松编辑前端内容。

依赖关系

  • symfony/framework-standard-edition ">=2.8|~3.0"

  • stof/doctrine-extensions-bundle "~1.2"

  • jQuery

安装

  • 对于 Symfony ~2.8: composer require tomatom/atom-bundle "~1.0"

  • 对于 Symfony ~4.2: composer require tomatom/atom-bundle "~2.0"

  • AppKernel.php
new TomAtom\AtomBundle\TomAtomAtomBundle(),

配置

  • routing.yml
atom:
    resource: "@TomAtomAtomBundle/Controller/"
    type:     annotation
  • config.yml
# Make sure translator is uncommented:
framework:
    translator:      { fallbacks: ["%locale%"] }
# ...

# Twig Configuration
twig:
    base_template_class: TomAtom\AtomBundle\Twig\Template
    # ...
  • security.yml
security:
    # ...
    # add role 'ROLE_ATOM_EDIT':
    role_hierarchy:
        ROLE_ATOM_EDIT:   ROLE_USER
        ROLE_ADMIN:       ROLE_ATOM_EDIT
        ROLE_SUPER_ADMIN: ROLE_ADMIN
    # ...
  • translation.yml
framework:
    # ...
    # Add enabled locales for multi language application
    enabled_locales: ['cs', 'en', 'de']
  • ::base.html.twig (或您的基模板)
{# don't forget to include your jQuery (tested with 1.8.3 - 2.1.4, others may work, 3.0 doesn't): #}
<script src={{ asset('path/to/jQuery.js') }}></script>

{{ render(controller('TomAtomAtomBundle:Atom:_metas')) }}
  • 若要从编辑器拖放上传图片,请 创建上传目录: /web/uploads/atom

用法

  • Atom 仅在 prod 环境中工作!testdev 和其他所有环境中,它们都被禁用,因此您可以立即看到更新的更改。

  • 目前有 3 种 Atom 类型

  • atom - Atom 带有富文本编辑器 (CKEditor)
  • atomline - Atom 行 用于在固定 HTML 标签内编辑纯文本
  • atomentity - Atom 实体 显示和更新给定实体的列
  • 若要在模板中使用 Atom,请添加带有 唯一 标识符的 Atom 标签:{% atom unique_identifier_here %} 和结束标签 {% endatom %}。您可以在标签之间添加默认内容,这些内容将在首次加载时保存。
{% atom foo %}
    <p> I am editable! </p>
{% endatom %}
  • 如果您只想编辑文本内容(如标题或表格单元格)而不想使用富文本编辑器,则有 Atom 行 标签(同样带有 唯一 标识符):{% atomline unique_identifier_here %} 和结束 {% endatomline %}
<h1>
   {% atomline bar %}
       I am editable!
   {% endatomline %}
<h1>
  • 若要编辑其他实体,则有 Atom 实体 标签,它接受以下参数

    • 包含所需实体的 Bundle 名称:实体名称(例如 AppBundle:Product
    • 用于保存内容的函数名称(通常是一些设置器)
    • 实体 ID
  • 示例(无需添加默认值,它将通过适当的获取器获取)

<div class="product-price">
   {% atomentity  AppBundle:Product, setPrice, 123 %}{% endatomentity %}
<div>

可编辑模式

  • prod 环境下通过用户角色 ROLE_ATOM_EDIT 进入带有 Atoms 的页面将解锁 可编辑模式,该模式可以通过浏览器屏幕右下角的图标 启用或禁用

翻译

  • 通过更改 _locale 请求参数在不同语言之间切换时,您可以轻松更新指定语言中的 Atoms。如果 Atom 实体实现了 Gedmo 可翻译行为,它们也可以从前端进行翻译。