kraksoft/redactor-bundle

Symfony Redactor WYSIWYG 表单类型

安装次数: 1,580

依赖关系: 0

建议者: 0

安全: 0

星标: 3

关注者: 2

分支: 0

开放问题: 0

类型:symfony-bundle

1.0.2 2014-09-21 23:12 UTC

This package is not auto-updated.

Last update: 2024-09-23 13:01:09 UTC


README

这是对 https://github.com/AStepanov/RedactorBundle/ 的非链接分支。真正的作者是 Andrey Stepanov,这里只是稍作修改的版本。

RedactorBundle

此组件旨在将 Redactor WYSIWYG 编辑器添加到您的 Symfony2 项目中。

此组件不包括原始的 Redactor JavaScript 库,使用它您需要从官方网站 http://imperavi.com/redactor/download/ 获取。

Symfony 2.1 的安装

composer.json

"require": {
    ...
    "kraksoft/redactor-bundle": "dev-master"
    ...
},
"repositories": [
    {
        "url": "https://github.com/AStepanov/RedactorBundle.git",
        "type": "vcs"
    }
],

app/AppKernel.php

<?php
public function registerBundles()
{
    $bundles = array(
        // ...
        new Stp\RedactorBundle\StpRedactorBundle(),
    );
}

运行以下命令

php app/console assets:install web

app/config/confug.yml

# Twig Configuration
twig:
    # ...
    form:
        resources:
            - 'StpRedactorBundle:Redactor:fields.html.twig'

要允许上传文件,请将以下行添加到 app/config/routing.yml

stp_redactor:
    resource: "@StpRedactorBundle/Controller/"
    type:     annotation
    prefix:   /redactor/

如何配置

RedactorBundle 提供配置不同选项的机会(例如:管理界面、评论、博客)

运行命令以检查所有配置选项

php app/console config:dump-reference stp_redactor

示例

#app/config/config.yml
stp_redactor:
    admin:
        upload_file:
            dir: "%kernel.root_dir%/../web/uploads/content/files"
            maxSize: 10M
            mimeTypes:
                - image/png
                - image/jpeg
        upload_image:
            dir: "%kernel.root_dir%/../web/uploads/content/images"
            maxSize: 5M
            minWidth: 100
            maxWidth: 900
            minHeight: 300
            maxHeight: 900
        role: [ROLE_ADMIN]
    blog:
        upload_image:
            dir: "%kernel.root_dir%/../web/uploads/blog/images"
        role: [IS_AUTHENTICATED_FULLY]
    comments:
        role: [IS_AUTHENTICATED_ANONYMOUSLY]
        settings:
            lang: en

如何使用

在表单类型中使用

{# template_with_redactor.html.twig #}

{% block javascripts %}
    {{ parent() }}
    <script type="text/javascript" src="/path_to_jquery/jquery.js"></script>
    <script type="text/javascript" src="/path_to_original_redactor/js/redactor.js"></script>
    <script type="text/javascript" src="{{ asset('bundles/stpredactor/js/script.js') }}"></script>
{% endblock %}

{% block stylesheets %}
    {{ parent() }}
    <link rel="stylesheet" href="/path_to_original_redactor/css/redactor.css" type="text/css" media="screen" />
{% endblock %}
<?php
//BlogPostType.php
namespace Stp\BlogBundle\Form;

use Symfony\Component\Form\FormBuilderInterface,
    Symfony\Component\Form\AbstractType;

class BlogPostType extends AbstractType
{
    /**
     * @param \Symfony\Component\Form\FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        parent::buildForm($builder, $options);
        $builder->add('description', 'redactor', array('redactor' => 'blog'));
    }
}

在 SonataAdminBundle 中使用

创建新的 SonataAdmin 布局

{# app/Resources/views/admin_layout.html.twig #}

{% extends 'SonataAdminBundle::standard_layout.html.twig' %}

{% block stylesheets %}
    {{ parent() }}
    <link rel="stylesheet" href="/path_to_original_redactor/css/redactor.css" type="text/css" media="screen" />
    <link rel="stylesheet" href="{{ asset('bundles/stpredactor/css/sonata.css') }}" type="text/css" media="screen" />
{% endblock %}

{% block javascripts %}
    {{ parent() }}
    <script type="text/javascript" src="/path_to_original_redactor/js/redactor.js"></script>
    <script type="text/javascript" src="{{ asset('bundles/stpredactor/js/script.js') }}"></script>
{% endblock %}

设置到您布局的路径

# app/config/config.yml
sonata_admin:
    templates:
        layout: ::admin_layout.html.twig