nano src/Petramas/MainBundle/Resources/views/User/new.html.twig
    <div class="form-group{% if form.path.vars.errors[0].message is defined %} has-error{% endif %}">
        {{ form_label(form.path, null, {'label_attr': {'class': 'col-sm-2 control-label' } }) }}
        <div class="col-sm-10">
            {{ form_widget(form.path, {'attr': {'class': 'form-control' } }) }}
            {% if form.path.vars.errors[0].message is defined %}
            <span class="help-block">
                {{ form.path.vars.errors[0].message }}
            </span>
            {% endif %}
        </div>
    </div>
una vez eliminado del formulario el siguiente inconveniente será que el nuevo campo file no tiene estilos, entonces agregamos el campo con estilos Bootstrap 3:
    <div class="form-group{% if form.file.vars.errors[0].message is defined %} has-error{% endif %}">
        {{ form_label(form.file, null, {'label_attr': {'class': 'col-sm-2 control-label' } }) }}
        <div class="col-sm-10">
            {{ form_widget(form.file, {'attr': {'class': 'form-control' } }) }}
            {% if form.file.vars.errors[0].message is defined %}
            <span class="help-block">
                {{ form.file.vars.errors[0].message }}
            </span>
            {% endif %}
        </div>
    </div>
Ahora el formulario se ve bien, pero al probar subir una imagen nada sucede, esto es debido a que el formulario no acepta subida de archivos, para que lo soporte debemos agregar el atributo de formulario "enctype":
{{ form_start(form, {'attr': {'class': 'form-horizontal', 'role': 'form', 'enctype': 'multipart/form-data' } }) }}
Hacemos exáctamente lo mismo con la plantilla de edición de usuarios:
nano src/Petramas/MainBundle/Resources/views/User/edit.html.twig
en este momento el archivo fue subido y la ruta fue guardada, así como el nombre original, pero al momento de listar los usuarios en el campo $path, se encuentra el nombre hash del archivo subido, que no tiene porque ser mostrado al usuario, sino el nombre original.
Para esto modificamos la plantilla index:
nano src/Petramas/MainBundle/Resources/views/User/index.html.twig
reemplazando
{{ entity.path }}
por:
{{ entity.original }}
por último, donde queremos mostrar la imágen, debemos imprimir entity.path, precedido de la ruta en donde se suben las fotos, en nuestro caso "web/uploads/documents", para poder mostrar esto último, debemos consultarlo en nuestro controlador y pasárselo a la vista en este caso vamos a poner de ejemplo en la plantilla para mostrar el detalle del usuario:
nano src/Petramas/MainBundle/Controller/UserController.php
entonces en el método showAction agregamos, luego de devuelta la entidad seleccionada por Id, el método getUploadDir así:
    /**
     * Finds and displays a User entity.
     *
     * @Route("/{id}", name="user_show")
     * @Method("GET")
     * @Template()
     */
    public function showAction($id)
    {
        $em = $this->getDoctrine()->getManager();
        $entity = $em->getRepository('PetramasMainBundle:User')->find($id);
        $entity->uploaddir = $entity->getUploadDir();
        if (!$entity) {
            throw $this->createNotFoundException('Unable to find GelImage entity.');
        }
        $deleteForm = $this->createDeleteForm($id);
        return array(
            'entity'      => $entity,
            'delete_form' => $deleteForm->createView(),
        );
    }
por último en la plantilla show modificamos el "path" a mostrar:
{{ entity.path }}
y podemos hacerlo así:
    <p>File name: {{ entity.original }}</p>
    <img src="/{{ entity.uploaddir }}/{{ entity.path }}">
 
No hay comentarios.:
Publicar un comentario
Puedes comentar como te gustaría que comenten de ti.