Php Symfony文件类型自定义
我正在尝试使用twig自定义Symfony中文件输入的呈现 plugins.krajee.com/file-basic-usage-demo 我遵循以下文件: 在my config.yml中Php Symfony文件类型自定义,php,twitter-bootstrap,symfony,twig,Php,Twitter Bootstrap,Symfony,Twig,我正在尝试使用twig自定义Symfony中文件输入的呈现 plugins.krajee.com/file-basic-usage-demo 我遵循以下文件: 在my config.yml中 # Twig Configuration twig: form_themes: - 'bootstrap_3_layout.html.twig' kartik_js: inputs: - "%kernel.root_dir%/../vendor/kartik
# Twig Configuration
twig:
form_themes:
- 'bootstrap_3_layout.html.twig'
kartik_js:
inputs:
- "%kernel.root_dir%/../vendor/kartik-v/bootstrap-fileinput/js/fileinput.js"
- "%kernel.root_dir%/../vendor/kartik-v/bootstrap-fileinput/js/locales/fr.js"
- "%kernel.root_dir%/../vendor/kartik-v/bootstrap-fileinput/themes/explorer/theme.js"
kartik_css:
inputs:
- "%kernel.root_dir%/../vendor/kartik-v/bootstrap-fileinput/css/fileinput.min.css"
- "%kernel.root_dir%/../vendor/kartik-v/bootstrap-fileinput/themes/explorer/theme.css"
我尝试所有的方法
1) 在myview.html.twig中的视图中自定义(这是现有引导布局的副本,我只是添加class=“file”)
这给了我一个错误
The merge filter only works with arrays or "Traversable", got "NULL" as first argument.
2) 创建一个外部文件
在resources/View/Form/fields.html.twig中
{% block form_widget_simple -%}
{% if type is not defined or type not in ['file', 'hidden'] %}
{%- set attr = attr|merge({class: (attr.class|default('') ~ ' form-control')|trim}) -%}
{% endif %}
{%- set type = type|default('text') -%}
<input class="file" type="file" {{ block('widget_attributes') }} {% if value is not empty %}value="{{ value }}" {% endif %}/>
{%- endblock form_widget_simple %}
但所有字段都是定制的
3) 在视图的呈现中添加类
{% form_theme form 'form/fields.html.twig' %}
{{ form_widget(form.imageFile, {'attr': {'class': 'file', 'type': 'file'} }) }}
对于最后两种方法,我得到:
我愿意接受所有的解决方案
谢谢你的帮助。我找到了
使用kartik-v/bootstrap文件输入,它可以正常工作
安装后,我在config.yml中添加了一些assetic
# Twig Configuration
twig:
form_themes:
- 'bootstrap_3_layout.html.twig'
kartik_js:
inputs:
- "%kernel.root_dir%/../vendor/kartik-v/bootstrap-fileinput/js/fileinput.js"
- "%kernel.root_dir%/../vendor/kartik-v/bootstrap-fileinput/js/locales/fr.js"
- "%kernel.root_dir%/../vendor/kartik-v/bootstrap-fileinput/themes/explorer/theme.js"
kartik_css:
inputs:
- "%kernel.root_dir%/../vendor/kartik-v/bootstrap-fileinput/css/fileinput.min.css"
- "%kernel.root_dir%/../vendor/kartik-v/bootstrap-fileinput/themes/explorer/theme.css"
然后在视图中添加css和js
{% block stylesheets %}
{{ parent() }}
{% stylesheets '@kartik_css' combine=true %}
<link href="{{ asset_url }}" type="text/css" rel="stylesheet" />
{% endstylesheets %}
{% endblock %}
{% javascripts '@kartik_js' combine=true %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
还有Javascrip
$("#fos_user_profile_form_imageFile").fileinput({
language: 'fr',
showUpload: false,
allowedFileExtensions: ['jpg', 'png', 'gif']
});
结果
我希望这能帮助一些人:)
祝你有愉快的一天 我找到了
使用kartik-v/bootstrap文件输入,它可以正常工作
安装后,我在config.yml中添加了一些assetic
# Twig Configuration
twig:
form_themes:
- 'bootstrap_3_layout.html.twig'
kartik_js:
inputs:
- "%kernel.root_dir%/../vendor/kartik-v/bootstrap-fileinput/js/fileinput.js"
- "%kernel.root_dir%/../vendor/kartik-v/bootstrap-fileinput/js/locales/fr.js"
- "%kernel.root_dir%/../vendor/kartik-v/bootstrap-fileinput/themes/explorer/theme.js"
kartik_css:
inputs:
- "%kernel.root_dir%/../vendor/kartik-v/bootstrap-fileinput/css/fileinput.min.css"
- "%kernel.root_dir%/../vendor/kartik-v/bootstrap-fileinput/themes/explorer/theme.css"
然后在视图中添加css和js
{% block stylesheets %}
{{ parent() }}
{% stylesheets '@kartik_css' combine=true %}
<link href="{{ asset_url }}" type="text/css" rel="stylesheet" />
{% endstylesheets %}
{% endblock %}
{% javascripts '@kartik_js' combine=true %}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
还有Javascrip
$("#fos_user_profile_form_imageFile").fileinput({
language: 'fr',
showUpload: false,
allowedFileExtensions: ['jpg', 'png', 'gif']
});
结果
我希望这能帮助一些人:)
祝你有愉快的一天 可能您需要创建表单扩展。最后一个扩展应该可以正常工作。JavaScript控制台中有任何错误输出吗?@Pete没有,我的JavaScript控制台中没有错误:/可能需要创建表单扩展最后一个应该可以正常工作。JavaScript控制台中是否有任何错误输出?@Pete否,我的JavaScript控制台中没有错误:/