vanio / vanio-web-bundle
Symfony2 Bundle 提供了一些网站开发附加功能
Requires
- php: ^7.0
- html2text/html2text: ^4.0.1
- sensio/framework-extra-bundle: ^3.0 || ^4.0 || ^5.0
- symfony/form: ^3.0
- symfony/security-bundle: ^3.0
- symfony/translation: ^3.0
- symfony/twig-bridge: ^3.0
- twig/twig: ^1.24.1 || ^2.0
- vanio/stdlib: ~0.1
- vanio/type-parser: ^0.1
Requires (Dev)
- dev-master / 0.5.x-dev
- dev-sf3 / 0.5.x-dev
- v0.4.0
- v0.3.0
- v0.2.0
- v0.1.0
- dev-sf6
- dev-sf5
- dev-uploaded_file_not_found
- dev-fix_confirm
- dev-name_mapping_fix
- dev-data_attribute
- dev-confirm_show
- dev-popover
- dev-fix_canonization_extension
- dev-regex
- dev-form_choice
- dev-nested_collections
- dev-confirm_event
- dev-form_toggle_with_radio
- dev-ignore_missing_file
- dev-pl_de
- dev-new_languages
- dev-fix_form_choice_type
- dev-configurable_date_picker
- dev-controller_result_listener
- dev-hotfix_max_collection_rows
- dev-preserve_missing_data_exclude_clickable
- dev-persistent_parameters
- dev-preserve_query_array_parameter
- dev-range_slider
- dev-form_choice_for_radio_buttons
- dev-confirm_form_submit
- dev-form_translation_remove_recursion
- dev-collection_widget
- dev-target_path_trait
- dev-toggle
- dev-fix_route_hierarchy_resolver
- dev-form_start_layout
- dev-resolve_locale_on_exception
- dev-is_translated_allows_null
- dev-form_translator_fallback
- dev-pagination_records_on_first_page
- dev-toggle_component
- dev-validation
- dev-fix_validation_token_parser
- dev-custom_prefixes_for_locales
- dev-locales_translations
- dev-menu_fix
This package is auto-updated.
Last update: 2024-09-14 13:10:56 UTC
README
安装
可以使用 composer 通常的方式安装。 composer require vanio/vanio-web-bundle
下一步是在你的 AppKernel
中注册此 bundle 以及它所依赖的 bundle。
// app/AppKernel.php // ... class AppKernel extends Kernel { // ... public function registerBundles(): array { $bundles = [ // ... new Vanio\UserBundle\VanioWebBundle, ]; // ... } }
功能
检测请求类型
为了检测当前请求是主请求还是子请求,设置了特殊的请求属性 _request_type
。这种逻辑发生在 Vanio\WebBundle\Request\RequestTypeListener
监听器中,该监听器默认未注册。通过将 detect_request_type
配置参数设置为 true 来启用此功能。
重定向到 Referer
在执行某些操作后将用户重定向回原页面是一个相当常见的任务。此 bundle 定义了一个名为 vanio_web.request.referer_resolver
的服务,可以帮助你完成这项任务。首先,它尝试从 _referer
(《%vanio_web.referer_parameter%》)查询参数中读取。如果查询参数不存在,则读取 HTTP_REFERER 标头并尝试将引用 URL 与定义的路由进行匹配。在缺少标头或 URL 无效(如指向不同网页的 URL)的情况下,使用回退路径。由于此功能主要在控制器内部使用,因此可以使用 Vanio\WebBundle\Request\RefererHelperTrait
,它定义了一个方法 - redirectToReferer(string $fallbackPath = null): RedirectResponse
。
Flash 消息
对我来说,翻译 flash 消息似乎很复杂。实际上,这非常简单,但你需要一个会话和一个翻译器。仅仅为了显示一个翻译的 flash 消息,就需要两个依赖项。为了简化这一点,有一个 Vanio\WebBundle\Translation\FlashMessage
值对象,你可以用它来封装消息,并将消息参数和域传递给它。此 bundle 还将 translation.extractor.php
服务替换为能够从 FlashMessage
构造函数中提取消息的实现。
$this->addFlash(FlashMessage::TYPE_DANGER, new FlashMessage('message', ['key' => 'value'], 'vanio_web'));
但添加 flash 消息只是问题的一半。你还需要在视图中的某个地方显示它,并自己将其翻译。
验证必填字段
通常,required
选项仅影响 HTML5 的 required
属性。此 bundle 允许设置 validate_required: true
以自动将 NotBlank
约束添加到表单中。默认验证消息可以通过设置 required_message
进行配置。
表单状态 URL 规范化
由于 SEO 优化,以及在某些情况下,由于在 URL 中序列化完整的表单状态过长且难以看,可以在表单选项中设置 canonize: true
。提交表单后,它将重定向到规范 URL,其中省略了所有空表单字段(甚至那些等于 empty_data
选项的字段)。
模板化
生成类名
有时,即使仅生成 HTML 元素的类名也可能很麻烦,如果它依赖于某些条件。让我们使用 class_name(array $classes): string
Twig 函数。你需要传递一个数组,其中键是类,值是布尔值,指示是否应该存在该类名。
检查文本是否已翻译
要检查文本是否已翻译,您可以使用检查翻译者目录的 is_translated(string $id, string $locale = null)
Twig 函数。当文本出现在目录中且翻译值不为 false 时,视为已翻译。
确定当前菜单项
要确定当前请求是否匹配菜单项,请使用 is_current(string $route): bool
Twig 函数。当请求属性 _route
等于指定的路由,或者请求路径信息以路由路径开头且以 /
分隔时,视为当前路由。
测试给定对象是否实现了给定类型
在 Twig 中,无法确定给定对象是否实现了给定类型。例如,无法确定闪存消息是否仅为字符串还是添加的 FlashMessage
类的实例。因此添加了 instance of(string $class)
Twig 测试。您可以使用它如下
{{ message is instance of('Vanio\\WebBundle\\Translation\\FlashMessage') ? message.message|trans(message.parameters, message.domain, message.locale) : message }}
从数组中移除值
使用 without(array $array, $values)
Twig 过滤器可以移除数组中的特定值。传递一个值或值的数组以移除,它将返回一个新数组,其中指定的值被取消设置。
{{ ['foo', 'bar']|without('foo') }}
从数组中移除键
使用 without(array $array, $keys)
Twig 过滤器可以移除数组中的特定键。传递一个字符串或键的数组以移除,它将返回一个新数组,其中指定的键被取消设置。
{{ {foo: 'bar', bar: 'baz'}|without_keys('foo') }}
从数组中移除空值
使用 withoutEmpty(array $array)
Twig 过滤器可以移除数组中的空值。值被认为是空值的方式与 empty
Twig 测试相同(''
、false
、null
、[]
或长度为零的 Countable
实例)。
{{ [null, 1]|without_empty }}
基于正则表达式替换
内置的 replace
Twig 过滤器底层使用 strtr
,但没有任何基于正则表达式的替换支持。因此,我们实现了 regexp_replace(string $string, $pattern, $replacement)
过滤器。您可以传递一个包含正则表达式作为键和替换值作为值的数组,或者当提供替换参数时,模式可以是字符串或数组(键将被忽略)。
{{ 'foo bar'|regexp_replace({'~foo~': 'baz', '~bar~': 'qux'}) }} {{ 'foo'|regexp_replace('~foo~', 'bar') }} {{ 'foo bar'|regexp_replace(['~foo~', '~bar~'], 'baz') }}
将 HTML 转换为纯文本
您是否曾经创建过 HTML 电子邮件?手动提供纯文本替代方案很麻烦,所以在这种情况下,html_to_text(string $html, array $options = []): string
Twig 过滤器是您的朋友。它使用方便的 html2text 库。
默认配置
detect_request_type: false referer_fallback_path: / referer_parameter: _referer