0

ビデオ、オーディオ、写真など、さまざまな種類のメディアのファイル アップロードを処理する管理フォームがあります。プレビューを表示したり、編集フォームでファイルのモーダルへのリンクを提供したりしたいと考えています。

以下にカスタム小枝テンプレートを用意しました。これは、期待どおりにすべてを細かい配置でロードしますが、サポートが必要なメディア ファイルのヘルプ要素で preivew をレンダリングしません。

{% elseif form.children|length > 0 %}
                <fieldset>
                    <div class="sonata-ba-collapsed-fields">
                    {% for nested_group_field_name, nested_group_field in form.children %}
                        {% for field_name, nested_field in nested_group_field.children %}
                        <div class="control-group">
                            <label class="control-label" for="nested_field.vars['sonata_admin'].admin.trans(nested_field.vars.label" {{ nested_field.vars['required']  ? 'class="required"' : '' }}>{{ nested_field.vars['sonata_admin'].admin.trans(nested_field.vars.label) }}</label>
                            <div class="controls">
                            {% if sonata_admin.field_description.associationadmin.formfielddescriptions[field_name] is defined %}                               

                                {{ form_widget(nested_field, {
                                    'inline': 'natural',
                                    'edit'  : 'inline'
                                }) }}
                                {% set dummy = nested_group_field.setrendered %}
                            {% else %}
                                {{ form_widget(nested_field) }}
                            {% endif %}
                                {% if sonata_admin.field_description.help %}
                <span class="help-block sonata-ba-field-help">{{ sonata_admin.admin.trans(sonata_admin.field_description.help, {}, sonata_admin.field_description.translationDomain)|raw }}</span>
            {% endif %}
                            </div>

                            </div>
                        {% endfor %}
                    {% endfor %}
                    </div>
                </fieldset>
            {% endif %}

これが管理フォームビルダーです

    protected function configureFormFields(FormMapper $formMapper)
{

        $media = $this->getSubject();


        // use $fileFieldOptions so we can add other options to the field
        $fileFieldOptions = array('required' => false,'label' => 'File', 'attr' => array("multiple" => "multiple"), 'by_reference' => false);
        if ($media && ($webPath = $media->getWebPath())) {
            if($media->getFormat()->getMediaType()=='Photo')
            {
                $fileFieldOptions['help'] = '<img src="'.$webPath.'" class="admin-preview" />';
            }
            elseif($media->getFormat()->getMediaType()=='Audio' || ($media->getFormat()->getMediaType()=='Video'))
            {
                    $fileFieldOptions['help'] = '<script type="text/javascript">
                                                 $(document).ready(function(){
                                                  $("#jplayer_'.$media->getId().'").jPlayer({
                                                   ready: function () {
                                                    $(this).jPlayer("setMedia", {'.
                                                    $media->getFormat().': "'.$webPath.'"
                                                    });
                                                   },
                                                   swfPath: "/js",
                                                   supplied: "'.$media->getFormat().'"
                                                  });
                                                 });
                                                </script>
                                                <div id="jquery_jplayer_1"></div>
                                                <div id="jp_container_1">
                                                 <a href="#" class="jp-play">Play</a>
                                                 <a href="#" class="jp-pause">Pause</a>
                                                </div><div class="jplayer_'.$media->getId().'"></div>';
            }
        }
    $formMapper
        ->add('title','text',array('label'=>'Title'))
        ->add('abstract','textarea',array('label'=>'Abstract'))
        ->add('language')
        ->add('format')
        ->add('file', 'file', $fileFieldOptions)
        ->add('quality')
    ;
}
4

0 に答える 0