alejandro-fiore / zf2-twb-bundle
Zend Framework 2模块,用于轻松集成Twitter Bootstrap
Requires
- php: >=5.3.2
- zendframework/zend-config: ~2.3
- zendframework/zend-escaper: ~2.3
- zendframework/zend-form: ~2.3
- zendframework/zend-i18n: ~2.3
- zendframework/zend-loader: ~2.3
- zendframework/zend-log: ~2.3
- zendframework/zend-modulemanager: ~2.3
- zendframework/zend-mvc: ~2.3
- zendframework/zend-serializer: ~2.3
- zendframework/zend-servicemanager: ~2.3
- zendframework/zend-stdlib: ~2.3
- zendframework/zend-view: ~2.3
Requires (Dev)
- phpunit/phpunit: 4.*
- satooshi/php-coveralls: 0.*
Suggests
- neilime/zf2-assets-bundle: Bundling & caching Twitter Bootstrap assets
- twitter/bootstrap: Twitter bootstrap assets
README
(支持Twitter Bootstrap v3.*)
注意:如果您想贡献,请不要犹豫,我会审查任何PR。
简介
TwbBundle是一个Zend Framework 2模块,用于轻松集成Twitter Bootstrap v3.*。
贡献
如果您希望为TwbBundle做出贡献,请阅读CONTRIBUTING.md文件。
演示/示例
使用TwbBundle渲染表单、按钮、警告:在线查看动作。
要求
- Zend Framework 2 (2.*)
- Twitter Bootstrap (v3.*)
安装
主要设置
通过克隆项目(手动)
- 将此项目克隆到您的
./vendor/
目录。 - (可选) 将Twitter bootstrap项目 (v3.*) 克隆到您的
./vendor/
目录。
使用composer(更快的方法)
-
将此项目添加到您的composer.json
"require": { "neilime/zf2-twb-bundle": "2.*@stable" }
-
现在运行以下命令让composer下载
$ php composer.phar update
安装后
-
在您的
application.config.php
文件中启用它。<?php return array( 'modules' => array( // ... 'TwbBundle', ), // ... );
-
包含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(); //...
手动
- 将
bootstrap.css
文件(可在Twitter Bootstrap网站上找到https://github.com/twbs/bootstrap/archive/v3.0.0.zip)复制到您的资源文件夹,并在head脚本中添加它
如何使用
视图助手
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());