Foros del Web » Programando para Internet » PHP » Symfony »

Enviar dato sin formulario, es posible ??

Estas en el tema de Enviar dato sin formulario, es posible ?? en el foro de Symfony en Foros del Web. Buen día. Como verán tengo tiempos de no crear un tema, y pues hoy me decidí a hacer este por razones que superan mis conocimientos. ...
  #1 (permalink)  
Antiguo 13/02/2018, 12:07
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 510
Antigüedad: 4 años, 7 meses
Puntos: 41
Enviar dato sin formulario, es posible ??

Buen día.

Como verán tengo tiempos de no crear un tema, y pues hoy me decidí a hacer este por razones que superan mis conocimientos.

Historia: Hace ya unos meses unos consultores externos desarrollaron una aplicación en Symfony (SF) y se la han trasladado al departamento para su mantenimiento y modificación. Si tener conocimientos de este FW, y con un requerimiento "sencillo" sobre mi, me he dispuesto a encaminarme mas en SF.

Este curso, es el que estoy siguiendo, pero con un requerimiento urgente que hacer, no toca de otra que solicitar a los experto de su ayuda

Problema: En este sistema se pueden crear Solicitudes de Compra (OC) las cuales se ven así en su consulta.


Pero en el departamento de compras (UACI) necesitan colocarles a cada solicitud un numero de OC, ya que el sistema a futuro (Esto lo haré YO) generara sus propias OC a partir de cada solicitud. Pero por el momento no existe ese modulo.

Bien, tomando como base la vista inicial que les puse arriba, logre crear por medio de la Entity, los nuevos campos (numero de OC y Fecha y Hora en que se registro ese numero) para la tabla de Solicitudes. Hasta ahi bien.

Esta es mi vista


Me costo, pero hoy cada vez que hago clic en el botón, se guarda la fecha y hora del momento, ya despues solo ocultare las que ya tengan un numero de OC en el campo y listo, peeeeero, a pesar de que coloque el textbox de Num OC en la vista, no logro hacer que se guarde en la DB y esto a de ser porque no estoy usando formulario, sino que tratando de enviar desde una vista un campo y es ahi donde tengo lios

Me gustaría saber si es posible o como puedo hacer para meter ese "textbox" en la DB.

Código de la Vista
Código HTML:
Ver original
  1. {% extends 'plantilla.html.twig' %}
  2.  
  3. {% block title %}
  4.    Solicitudes sin OC
  5. {% endblock %}
  6.  
  7. {% block body %}
  8.     {{ include('default/menu.html.twig') }}
  9.     <div class="container">
  10.         <article class="tema col-xs-12 col-sm-12 col-md-12">
  11.             <h3 class="text-muted centrar">Listado de Solicitudes sin Orden de Compra</h3>
  12.         </article>
  13.     </div>
  14.     <div class="table-responsive">
  15.         <table class="table table-striped table-bordered table-hover">
  16.             <caption>Registros encontrados: <span id="total">{{ solicitudes.getTotalItemCount }}</span></caption>
  17.             <thead>
  18.                 <tr class="danger">
  19.                     <th class="hidden-xs centrar"></th>
  20.                     <th class="centrar">SOLICITUD</th>
  21.                     <th class="centrar">FECHA</th>
  22.                     <th class="centrar">CREADOR</th>
  23.                     <th class="centrar">MONTO</th>
  24.                     <th class="col-lg-2 centrar">NUMERO OC</th>
  25.                     <th class="centrar">GUARDAR</th>
  26.                 </tr>
  27.             </thead>
  28.             <tbody>
  29.                 {% if solicitudes is not empty %}
  30.                     {% for solicitud in solicitudes %}
  31.                         <tr data-id="{{ solicitud.id }}">
  32.                             <td class="hidden-xs centrar">{{ loop.index }}</td>
  33.                             <td class="centrar">{{ solicitud.id }}</td>
  34.                             <td class="centrar">{{ solicitud.fecha|date('d/m/Y') }}</td>
  35.                             <td class="centrar">{{ solicitud.usuario.usuario }}</td>
  36.                             <td class="centrar">${{ solicitud.total|number_format(2, '.', ',') }}</td>
  37.                             <td class="centrar">
  38.                                 <input type="text" class="input form-control controles" placeholder="N° OC" onkeyup="this.value=this.value.toUpperCase()" name="oc_numero" id="oc_numero" autofocus>
  39.                             </td>
  40.                             <td class="centrar">
  41.                                 <a title="APROBAR"
  42.                                class="btn btn-info active" href="{{ path('numerar_solicitud', {id: solicitud.id})  }}">
  43.                                     <i class="glyphicon glyphicon-ok"></i>
  44.                                 </a>
  45.                             </td>
  46.                         </tr>
  47.                     {% endfor %}
  48.             </tbody>
  49.                 {% else %}
  50.                     <tr>
  51.                         <td colspan="8">
  52.                             <center>
  53.                                 <img src="{{ asset('img/datos.png') }}" class="img-responsive" alt="SIN RESULTADOS">
  54.                             </center>
  55.                         </td>
  56.                     </tr>
  57.                 {% endif %}
  58.         </table>
  59.         <div class="navigation">
  60.             {{ knp_pagination_render(solicitudes) }}
  61.         </div>
  62.     </div>
  63. {% endblock %}

Código del Controller
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #2 (permalink)  
Antiguo 13/02/2018, 12:12
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 510
Antigüedad: 4 años, 7 meses
Puntos: 41
Respuesta: Enviar dato sin formulario, es posible ??

No me dejo poner código PHP en el post original

Código del Controller
Código PHP:
Ver original
  1. // Numerar Solicitud con OC
  2.     /**
  3.      * @Route("/{id}/numerar_solicitud", name="numerar_solicitud")
  4.      */
  5.     public function numerarSolicitudAction(Request $request, $id) {
  6.         $securityContext = $this->container->get('security.authorization_checker');
  7.         if ($securityContext->isGranted('ROLE_NUM_OC')) {
  8.             $em = $this->getDoctrine()->getManager();
  9.  
  10.             // Debo buscar en la tabla Solicitud por el ID de Solicitud
  11.             $solicitud = $em->getRepository('AppBundle:Solicitud')
  12.                     ->findOneById($id);
  13.  
  14.             $oc = $request->request->get("oc_numero");
  15.             print($oc);
  16.  
  17.             // Fecha NOW()
  18.             $fecha = date('Y-m-d H:i:s');
  19.             // $seguimiento = $em->getRepository('AppBundle:Seguimiento')
  20.             //         ->findOneByidSolicitud($solicitud);
  21.             // $seguimiento->setPresidencia(new \DateTime($fecha));
  22.  
  23.             $solicitud->setFechaOrden(new \DateTime($fecha));
  24.  
  25.             // Obtener ID de usuario activo
  26.             $user = $this->getUser();
  27.             $usuario = $this->getDoctrine()
  28.                     ->getManager()
  29.                     ->getRepository('AppBundle:Usuario')
  30.                     ->findOneById($user->getId());
  31.             // Bitacora
  32.             $bitacora = new Bitacora();
  33.             $accion = 'Colocar Numero de OC a la Solicitud '.$solicitud->getId();
  34.             $bitacora->setUsuario($usuario);
  35.             $bitacora->setAccion($accion);
  36.  
  37.             $em->persist($solicitud);
  38.             $em->persist($bitacora);
  39.             $em->flush();
  40.  
  41.             return $this->redirectToRoute('numero_oc');
  42.         } else {
  43.             return $this->render('error/error403.html.twig');
  44.         }
  45.     }

Si se fijan en la vista, lo que no estoy mandando en el href del ancla es el parámetro del textbox, porque si lo colocaba 'oc': oc_numero como parametro pues me da error 500 y no carga nada ni da errores.

Ya en el controlador, en la linea 14 y 15, intento extraer el numero o dato que se ha mandado desde la vista, y por lo menos mostrarla en un echo para verla en la vista, pero a pesar que no me da errores (porque obvio no mando ese parámetro) no puedo pasar de ahí.

Espero haber explicado bien mi problema y sepan que ya estoy leyendo mucho de Symfony...
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.

Última edición por KATHYU; 13/02/2018 a las 12:18



La zona horaria es GMT -6. Ahora son las 19:07.