alejandro-fiore/zf2-twb-bundle

Zend Framework 2模块,用于轻松集成Twitter Bootstrap

2.5.0 2016-12-22 14:55 UTC

This package is auto-updated.

Last update: 2024-09-05 05:46:29 UTC


README

(支持Twitter Bootstrap v3.*)

Build Status Latest Stable Version Total Downloads Dependency Status

注意:如果您想贡献,请不要犹豫,我会审查任何PR。

Support the project

简介

TwbBundle是一个Zend Framework 2模块,用于轻松集成Twitter Bootstrap v3.*

贡献

如果您希望为TwbBundle做出贡献,请阅读CONTRIBUTING.md文件。

演示/示例

使用TwbBundle渲染表单、按钮、警告:在线查看动作

要求

安装

主要设置

通过克隆项目(手动)

  1. 将此项目克隆到您的./vendor/目录。
  2. (可选) 将Twitter bootstrap项目 (v3.*) 克隆到您的./vendor/目录。

使用composer(更快的方法)

  1. 将此项目添加到您的composer.json

    "require": {
        "neilime/zf2-twb-bundle": "2.*@stable"
    }
  2. 现在运行以下命令让composer下载

    $ php composer.phar update

安装后

  1. 在您的application.config.php文件中启用它。

    <?php
    return array(
        'modules' => array(
            // ...
            'TwbBundle',
        ),
        // ...
    );
  2. 包含Twitter Bootstrap资源

使用AssetsBundle模块(简单方法)
  • 安装AssetsBundle模块(1.0)

  • 安装Twitter Bootstrap (v2.3.2)

  • 编辑应用程序模块配置文件module/Application/config/module.config.php,添加以下配置片段

    <?php
    return array(
        //...
         'asset_bundle' => array(
             'assets' => array(
                 'less' => array('@zfRootPath/vendor/twitter/bootstrap/less/bootstrap.less')
             )
         ),
         //...
     );
  • 编辑布局文件module/Application/view/layout/layout.phtml,以渲染head脚本

    <?php
    //...
    echo $this->headScript();
    //...
手动

如何使用

视图助手

TwbBundle提供视图助手,帮助渲染HTML元素

表单

表单:TwbBundle\Form\View\Helper\TwbBundleForm

表单助手可以通过视图助手服务form(\Zend\Form\FormInterface $oForm = null, $sFormLayout = \TwbBundle\Form\View\Helper\TwbBundleForm::LAYOUT_HORIZONTAL)在视图中调用

<?php
$this->form(new \Zend\Form\Form());

使用特定布局打开表单标签

<?php
$this->form(null,\TwbBundle\Form\View\Helper\TwbBundleForm::LAYOUT_INLINE)->openTag($oForm);

此助手接受一个表单元素作为第一个参数,并接受一个可选的Bootstrap定义的布局样式定义作为第二个参数。以下是可用的布局

  • TwbBundle\Form\View\Helper::LAYOUT_HORIZONTAL:水平(默认)
  • TwbBundle\Form\View\Helper::LAYOUT_INLINE:内联

助手自动添加表单特定类和form角色属性。

表单中的按钮组

表单助手可以在表行中渲染按钮组,按钮元素通过选项button-group分组。例如

<?php
$oForm = new \Zend\Form\Form();
$oForm
    ->add(new \Zend\Form\Element\Button('left-button', array('label' => 'Left', 'button-group' => 'group-1')))
    ->add(new \Zend\Form\Element\Button('roght-button', array('label' => 'Right', 'button-group' => 'group-1')));
$this->form($oForm);

按钮:TwbBundle\Form\View\Helper\TwbBundleFormButton

按钮助手可以通过视图助手服务formButton(\Zend\Form\ElementInterface $oElement, $sButtonContent = null)在视图中调用

<?php
$this->formButton(new \Zend\Form\Element());

此助手接受一个按钮元素作为第一个参数,并接受一个可选的按钮内容作为第二个参数。它会自动添加按钮特定类(如果没有定义按钮类,则为btn & btn-default)属性。

选项 glyphicon(字符串或数组)和 fontAwesome(字符串或数组)可以被定义为在元素中渲染 glyphicon 或 fontAwesome 图标:glyphicon 通过 glyphicon 渲染器 渲染。fontAwesome 通过 fontAwesome 渲染器 渲染。

如果选项是字符串,则应该是图标的名称(例如 "star","search" ...),如果存在,则 glyphicon 将在标签前添加。如果选项是数组,它接受以下选项

  • 字符串 icon:图标的名称(例如 "star","search" ...)。
  • 字符串 position:(可选)glyphicon 预先或附加到按钮内容的位置,\TwbBundle\Form\View\Helper\TwbBundleFormButton::GLYPHICON_PREPEND(默认)和 \TwbBundle\Form\View\Helper\TwbBundleFormButton::GLYPHICON_APPEND
  • 数组 attributes:(可选)添加到 glyphicon 元素的附加属性

按钮可以通过定义到元素的选项 dropdown(数组)设置为下拉按钮:下拉菜单通过 下拉菜单渲染器 渲染,它接受以下附加选项

  • 布尔值 split:按钮元素和箭头被分割。
  • 布尔值 dropup:渲染一个向上展开的元素而不是下拉菜单。

可以通过将选项 disable-twb 传递给元素来禁用将其渲染在 div 容器中。

复选框:TwbBundle\Form\View\Helper\TwbBundleFormCheckbox

复选框助手可以通过视图助手服务 formCheckbox(\Zend\Form\Checkbox $oElement) 在视图中调用

<?php
$this->formCheckbox(new \Zend\Form\Element\Checkbox('checkbox-input'));

此助手接受一个复选框元素作为第一个参数。由于输入被渲染到一个标签元素中,可以传递选项来指定标签的位置(默认为追加)。可以将选项 disable-twb(布尔值)传递给元素以禁用将其渲染到 label 中。

<?php
$this->formCheckbox(new \Zend\Form\Element\Checkbox('checkbox-input',array(
    'label' => 'Prepend label',
    'label_options' => array('position' => \Zend\Form\View\Helper\FormRow::LABEL_PREPEND)
)));

表单集合:TwbBundle\Form\View\Helper\TwbBundleFormCollection

表单集合助手可以通过视图助手服务 formCollection(\Zend\Form\ElementInterface $oElement) 在视图中调用

<?php
$this->formCollection(new \Zend\Form\Element());

此助手接受一个表单集合(分组)元素作为第一个参数。

表单元素:TwbBundle\Form\View\Helper\TwbBundleFormElement

表单元素助手可以通过视图助手服务 formElement(\Zend\Form\ElementInterface $oElement) 在视图中调用

<?php
$this->formElement(new \Zend\Form\Element());

此助手接受一个表单元素作为第一个参数。此助手可以通过设置适当的选项 add-on-prepend 和/或 add-on-append 到元素中来渲染预先和/或附加的添加项。这些选项接受以下值

  • Zend\Form\ElementInterface:元素将在添加项中渲染
  • scalar:值将被翻译并在添加项中渲染
  • array:数组接受以下键之一
    • text(标量):值将被翻译并在添加项中渲染
    • element(数组):将通过 \Zend\Form\Factory 和给定的数组创建一个元素,然后在该添加项中渲染
    • element(Zend\Form\ElementInterface):元素将在添加项中渲染

表单元素错误:TwbBundle\Form\View\Helper\TwbBundleFormElementErrors

表单元素错误助手可以通过视图助手服务 formElementErrors(\Zend\Form\ElementInterface $oElement) 在视图中调用

<?php
$this->formElementErrors(new \Zend\Form\Element());

此助手接受一个表单元素作为第一个参数。此助手渲染元素的错误。

多选框:TwbBundle\Form\View\Helper\TwbBundleFormMultiCheckbox

多选框助手可以通过视图助手服务 formMultiCheckbox(\Zend\Form\ElementInterface $oElement) 在视图中调用

<?php
$this->formMultiCheckbox(new \Zend\Form\Element\ElementInterface());

此助手接受一个元素作为第一个参数。可以将选项 inline(布尔值)传递给元素以显示内联复选框(默认)或不显示。

单选框 : TwbBundle\Form\View\Helper\TwbBundleFormRadio

可以使用视图助手服务 formCheckbox(\Zend\Form\ElementInterface $oElement) 在视图中调用单选框助手

<?php
$this->formRadio(new \Zend\Form\Element\ElementInterface());

此助手接受一个元素作为第一个参数。可以将 disable-twb (布尔值)选项传递给元素以禁用其在 div 容器中的渲染。可以将 inline (布尔值)选项传递给元素以显示内联单选框或默认不显示。

表单行 : TwbBundle\Form\View\Helper\TwbBundleFormRow

可以使用视图助手服务 formRow(\Zend\Form\ElementInterface $oElement) 在视图中调用表单元素助手

<?php
$this->formRow(new \Zend\Form\Element());

此助手接受一个表单元素作为第一个参数。可以将 twb-layout (字符串)选项传递给元素以使用定义的布局样式渲染行,如 表单助手。可以将 validation-state (字符串)选项传递给元素以使用定义的验证状态类属性(has-...)渲染行。如果元素有消息,则会自动添加 has-error 类属性。可以将 column-size (整数)选项传递给元素以使用定义的列大小类属性(col-lg-...)渲染行。可以将 help-block (字符串)选项传递给元素以渲染帮助块,并将其附加到元素。

如果您想将元素包装在

如果您想在同一行上放置 X 个元素,可以将 twb-row-open (布尔值)选项传递给元素,这样行就会开始,并在渲染元素之前打印。您可能需要与此选项一起提供 column-size。可以将 twb-row-close (布尔值)选项传递给元素以关闭之前打开的行,并在元素渲染后打印。注意:关闭之前打开的行是您的责任。

您可以在取消转义后允许标签 HTML 渲染

<?php
$this->formRow(new \Zend\Form\Element('my-element',  array(
    'label' => 'My <i>Label</i> :',
    'label_options' => array('disable_html_escape' => true)
)));

您还可以通过将 twb-form-group-size 选项传递给 formRow 的元素来设置表单组大小,例如,以下是 Twig 语法示例

{% for f in server_form %}
    {% do f.setOption( 'twb-form-group-size', 'form-group-sm' ) %}
    {{ formRow( f ) }}
{% endfor %}

静态 : TwbBundle\Form\View\Helper\TwbBundleFormStatic

可以使用视图助手服务 formStatic(\Zend\Form\ElementInterface $oElement) 在视图中调用静态助手

<?php
$this->formStatic(new \Zend\Form\Element\ElementInterface());

此助手接受一个元素作为第一个参数。

混合

警报 : TwbBundle\View\Helper\TwbBundleAlert

可以使用视图助手服务 alert($sAlertMessage = null, $aAlertAttributes = null, $bDismissable = false) 在视图中调用警报助手

<?php
$this->alert('alert message',array('class' => 'alert-success'));

此助手接受一条消息作为第一个参数,警报容器的属性作为第二个参数(可选),以及一个布尔值作为第三个参数以显示或隐藏关闭操作(可选)。自动添加 "alert" 类属性到警报容器。

徽章 : TwbBundle\View\Helper\TwbBundleBadge

可以使用视图助手服务 badge($sBadgeMessage = null, array $aBadgeAttributes = null) 在视图中调用徽章助手

<?php
$this->badge('badge message',array('class' => 'pull-right'));

此助手接受一条消息作为第一个参数,徽章容器的属性作为第二个参数(可选)。自动添加 "badge" 类属性到徽章容器。

按钮组 : TwbBundle\View\Helper\TwbBundleButtonGroup

可以使用视图助手服务 buttonGroup(array $aButtons = null, array $aButtonGroupOptions = null) 在视图中调用按钮组助手

<?php
$this->buttonGroup(array(new \Zend\Form\Element\Button('left', array('label' => 'Left'))),array('class' => 'pull-right'));

此助手接受一个按钮数组作为第一个参数,按钮组容器的属性作为第二个参数(可选)。按钮可以是 \Zend\Form\Element\Button 的实例,或者包含用于使用 \Zend\Form\Factory 构建元素的数据的数组。

图标 : TwbBundle\View\Helper\TwbBundleGlyphicon

图标辅助函数可以在视图中通过视图辅助服务 glyphicon($sGlyphicon = null, array $aGlyphiconAttributes = null) 调用。

<?php
$this->glyphicon('star',array('class' => 'pull-right'));

此辅助函数接受一个图标名称作为第一个参数(例如:"star","search" ...),以及作为第二个参数的图标元素属性(可选)。类属性 "glyphicon" 将自动添加到图标容器中。

Font Awesome : TwbBundle\View\Helper\TwbBundleFontAwesome

Font Awesome 辅助函数可以在视图中通过视图辅助服务 fontAwesome($sFontAwesome = null, array $aFontAwesomeAttributes = null) 调用。

<?php
$this->fontAwesome('star',array('class' => 'pull-right'));

此辅助函数接受一个图标名称作为第一个参数(例如:"star","search" ...),以及作为第二个参数的 Font Awesome 元素属性(可选)。类属性 "fa" 将自动添加到 Font Awesome 容器中。

下拉菜单 : TwbBundle\View\Helper\TwbBundleDropDown

下拉菜单辅助函数可以在视图中通过视图辅助服务 dropdown(array $aDropdownOptions = null) 调用。

<?php
$this->dropdown(array('Item #1',\TwbBundle\View\Helper\TwbBundleDropDown::TYPE_ITEM_DIVIDER,'Item #2'));

此辅助函数接受下拉菜单配置作为第一个参数。

  • attributes (数组) : 下拉菜单容器的属性(可选)
  • label (标量) : 标签内容(将被翻译),可能为空(可选)
  • toggle_attributes (数组) : 下拉菜单切换容器的属性(可选)
  • items (数组) : 项目列表,应包含
  • 标量 :
  • \TwbBundle\View\Helper\TwbBundleDropDown::TYPE_ITEM_DIVIDER : 显示分隔符
  • text : 在链接中显示文本(已翻译)(锚点属性与内容相同)
  • array : 项目选项
  • type (字符串) : 项目的类型 * \TwbBundle\View\Helper\TwbBundleDropDown::TYPE_ITEM_HEADER : 将项目渲染为标题。它需要以下选项
    • label (标量) 项目的内容文本(已翻译)
    • \TwbBundle\View\Helper\TwbBundleDropDown::TYPE_ITEM_DIVIDER : 渲染分隔符
    • \TwbBundle\View\Helper\TwbBundleDropDown::TYPE_ITEM_LINK : 将项目渲染为链接 <a ...> 它需要以下选项
    • label (标量) 项目的内容文本(已翻译)
    • item_attributes (数组) : 项目容器的属性(可选)
  • attributes (数组) : 项目容器的属性
  • list_attributes (数组) : 下拉菜单列表容器的属性(可选)

标签 : TwbBundle\View\Helper\TwbBundleLabel

标签辅助函数可以在视图中通过视图辅助服务 label($sLabelMessage = null, array $aLabelAttributes = 'label-default') 调用。

<?php
$this->label('label message',array('class' => 'label-primary'));

此辅助函数接受一个消息作为第一个参数,以及作为第二个参数的标签容器属性(可选)。类属性 "label" 将自动添加到标签容器中,如果没有提供任何属性,则默认为 "label-default"。默认标签容器是一个 span,但可以通过在属性数组中传递标签名称来更改。

<?php
$this->label('label message',array('class' => 'label-primary','tagName' => 'a'));

选项

忽略自定义视图辅助函数

默认情况下,此模块尝试将 form-control 类添加到每个表单元素。有一些元素,如复选框、单选按钮和按钮,在 Bootstrap 中不使用该类。此配置允许您告诉渲染方法忽略您的自定义表单视图辅助函数,并且不要添加该类。

    return [
        'twbbundle' => [
            'ignoredViewHelpers' => [
                'viewhelpername',
            ],
        ]
    ];

向视图辅助函数添加实例映射和类型映射

此配置选项允许更改 FormElement 类的实例映射和类型映射。当新元素(或元素及其视图辅助函数)添加到您的项目时,这种功能是一个很好的方法。

    return [
        'twbbundle' => [
            'type_map' => [
                'help_words' => 'formhelpwords',
            ],
            'class_map' => [
                'Application\Form\Element\HelpWords' => 'formhelpwords',
            ],
        ]
    ];

元素

TwbBundle 提供了新的元素来支持 Twitter Bootstrap 的潜力。

StaticElement : TwbBundle\Form\Element\StaticElement

静态元素是一个表单元素,它提供 静态控件,应该通过 静态表单辅助函数 渲染。

<?php
$this->formStatic(new \TwbBundle\Form\Element\StaticElement());