Foros del Web » Programando para Internet » PHP »

modelo vista controlador y ajax

Estas en el tema de modelo vista controlador y ajax en el foro de PHP en Foros del Web. hola amigos espero me puedan ayudar estoy trabajando modelo vista controlador y me estoy basando de esta pagina http://www.jourmoly.com.ar/introducc...primera-parte/ el problema que tengo es como ...
  #1 (permalink)  
Antiguo 02/01/2013, 19:39
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
modelo vista controlador y ajax

hola amigos espero me puedan ayudar

estoy trabajando modelo vista controlador y me estoy basando de esta pagina
http://www.jourmoly.com.ar/introducc...primera-parte/

el problema que tengo es como implementar ajax en este mvc, me explico un poco

normalmente para un enlance tengo

Código PHP:
Ver original
  1. href="index.php?controller=user_&amp;accion=update_one_user_mod&id_usuarios=<? echo base64_encode($_SESSION['nombre'])?>"

pero en ajax
Código Javascript:
Ver original
  1. $.ajax({
  2.             type: "POST",
  3.             url: "views/insertar_usuario-login.php",
  4.             data: dataString,
  5.            }).done(function(data) {

el problema que tengo es que controlador tengo las funciones y desde ahi enlazo al fromulario .php pero con ajax me toca de una llamar el formulario .php
Código PHP:
Ver original
  1. function add_users()
  2. {
  3.     require 'models/conexion.php';
  4.     require 'models/user_Model.php';
  5.    
  6.     $lc=new Conexion();
  7.         $db = $lc -> conec();
  8.        
  9.         $ls = new Users(); 
  10.         $lu = $ls -> list_user_mod($db);
  11.         $lt = $ls -> list_tipos_usuarios($db);
  12.        
  13.  
  14.      if($_POST)
  15.        {
  16.              
  17.               $ls = new Users();
  18.               $ls -> add_user($db);
  19.               $ls -> acciones_user($db);
  20.               echo '<script languaje="Javascript">location.href="views/frm_sucess_users.php"</script>';
  21.        }
  22.        
  23.        
  24.  
  25.     require 'views/frm_ins_user.php';
  26. }
  #2 (permalink)  
Antiguo 02/01/2013, 19:58
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 6 meses
Puntos: 56
Respuesta: modelo vista controlador y ajax

las llamadas ajax se hacen desde las vistas, y las funciones del controlador que reciben llamadas ajax no tiene vistas asociadas, solo envían data en algún formato definido previamente: html, json (de preferencia)
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #3 (permalink)  
Antiguo 02/01/2013, 20:04
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: modelo vista controlador y ajax

jcxnet gracias por responder , puedes darme un ejemplo de lo que me indicas?

yo podria hacer esto?

Código Javascript:
Ver original
  1. $.ajax({
  2.             type: "POST",
  3.             url: "index.php?controller=actividad_&accion=list_actividades",
  4.             data: dataString,
  5.            }).done

Última edición por Montes28; 02/01/2013 a las 20:12
  #4 (permalink)  
Antiguo 03/01/2013, 08:18
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 6 meses
Puntos: 56
Respuesta: modelo vista controlador y ajax

los parámetros se envían usando "data", entonces tu llamada quedaría así:
Código:
$.ajax({
            type: "POST",
            url: "index.php",
            data: {controller:"actividad_", accion: "list_actividades"}
           }).done
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #5 (permalink)  
Antiguo 03/01/2013, 08:46
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: modelo vista controlador y ajax

gracias por responder jcxnet , estoy un poco confundido

te voy a explicar un poco mi requerimiento

en el controlador tengo
Código PHP:
Ver original
  1. /*------------------  Funcion Login Usuarios  ------------------*/
  2.     function login_users()
  3.    
  4.     {
  5.    
  6.           require 'models/conexion.php';       
  7.           require 'models/login_Model.php';
  8.    
  9.        if($_POST)
  10.         {
  11.              
  12.  
  13.  
  14.               $lc=new Conexion();
  15.               $db = $lc -> conectar();
  16.                
  17.               if (empty($db)){
  18.              
  19.              
  20.         header("Refresh: 0; URL=/volcanicos/views/error.php");
  21.      die();
  22.                 }else{             
  23.               $ls = new Login();
  24.               $ls -> validate_users($db);
  25.                 }
  26.         }
  27.        
  28.         //require 'views/login.php';
  29.         require 'barra.html';
  30.     }

en barra.html
Código Javascript:
Ver original
  1. $('#iniciar').click(function(){
  2.     alert('iniciar');
  3.     $.ajax({
  4.     type: "POST",
  5.     url: "index.php",
  6.     data: {controller:"login_", accion: "login_users"}
  7.     })
  8.  
  9.     });

Código HTML:
Ver original
  1. <form  action="" method="post" name="frm_login" id="myform1">
  2.               <input id="user_username" style="margin-bottom: 15px;" type="text" name="usuario" size="30" placeholder="usuario"/>
  3.               <input name="clave" type="password"  id="clave"placeholder="contraseña"/>
  4.               <input id="toggleBtnChbox"  style="float: left; margin-right: 10px;" type="checkbox"  name="" value="" />
  5.              <label for="user_remember_me" class="string optional Estilo1">Ver Contraseña</label>
  6.              <a href="index.php?controller=user_&accion=recuperar_contrasena" >olvide mi contraseña</a>
  7.              <input class="btn btn-primary" id="iniciar" style="clear: left; width: 100%; height: 32px; font-size: 13px;" name="commit" value="Iniciar Sesión" />

necesito que si el usuario no ingreso bien el usuario y la clave se muestre un error en el form
este form es lo trabajo como este ejemplo http://aext.net/example/twitterlogin/ , el problema que tengo es que el error se debe visualizar abriendo otra vez el form
  #6 (permalink)  
Antiguo 04/01/2013, 08:11
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: modelo vista controlador y ajax

Probá con esto

loguin.html

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="es-ar">
  3. <meta charset="utf-8" />
  4. <title>Form básico - mostrar ocultar loguin</title>
  5. <style type="text/css">
  6. /*<![CDATA[*/
  7. body{
  8. font-family: verdana, sans-serif;
  9. font-size: 10pt;
  10. }
  11. #loguin{
  12. width: 350px;
  13. padding: 5px;
  14. background: lime;
  15. border-radius: 8px;
  16. }
  17. .entrar{
  18. cursor: pointer;
  19. font-weight: bold;
  20. }
  21. fieldset#acceso{
  22. width: 350px;
  23. background: orange;
  24. border-radius: 8px;
  25. }
  26.  
  27. /*]]>*/
  28. <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
  29. <script type="text/javascript">
  30. //<![CDATA[
  31. function validar(){
  32. var elNombre = document.getElementById('nombre');
  33. if(elNombre.value == ''){
  34. document.getElementById('error_nombre').innerHTML = "Falta nombre";
  35. return false;
  36. }
  37. }
  38. //]]>
  39. </head>
  40. <div id="loguin"> tiene una cuenta? <span class="entrar">Ingresar aqui</span></div>
  41. <fieldset id="acceso">
  42. <form action="procesar.php" method="post" onsubmit="return validar();">
  43. <p>
  44. <label for="nombre">Nombre</label>
  45. <input type="text" value="" id="nombre" name="nombre" autocomplete="off" /> <span id="error_nombre"><!-- mensaje de error --></span><br /><br />
  46. <input type="submit" value="procesar" name="procesando" />
  47. </p>
  48. </form>
  49. <script type="text/javascript">
  50. //<![CDATA[
  51. $(document).ready(function() {
  52. $("fieldset#acceso").hide();
  53. $(".entrar").click(function() {      
  54. $("#loguin").hide();
  55. $("fieldset#acceso").show(300);
  56. });
  57.  
  58. $(document).mouseup(function(e){
  59. var contenedor = $("fieldset#acceso");
  60. if (contenedor.has(e.target).length === 0){
  61.  $("#error_nombre").text('');
  62.  $("#nombre").val('');
  63.  contenedor.hide();
  64.  $("#loguin").show();
  65. }
  66. });
  67.  
  68. });
  69. //]]>
  70. </body>
  71. </html>

procesar.php

Código PHP:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="es-ar">
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>Form básico - demo - procesando</title>
  6. </head>
  7. <body>
  8. <?php
  9. $usuario = $_POST['nombre'];
  10.  
  11. if(isset($usuario)){
  12. echo "<p>Se envió \$_POST['nombre']</p>";
  13. }
  14.  
  15. if($usuario == null){
  16. echo "<p>el usuario es NULL</p>";
  17. }
  18.  
  19. if(empty($usuario)){
  20. echo "<p>el usuario es empty</p>";
  21. }
  22.  
  23. if($usuario == ''){
  24. echo "<p>el usuario es vacio</p>";
  25. }
  26. echo "El usuario es: <b>" . $usuario . " </b>";
  27. ?>
  28. <p>
  29. <a href="loguin.html">Enviar otra vez</a>
  30. </p>
  31. </body>
  32. </html>

El php es algo muy básico solo a efectos de la comprobación. y la validación en el html también. Ahora lo que te faltaría es procesar el form con $.ajax()

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #7 (permalink)  
Antiguo 04/01/2013, 10:39
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: modelo vista controlador y ajax

emperar gracias por responder . pero creo que yo no me hice entener, te voy a explicar:

mi aplicacion esta trabajando MVC segun http://www.jourmoly.com.ar/introducc...primera-parte/
en la vista necesito ejecutar un ajax y requiero ejecutar la function login_users() que se encuentra en login_Controller.php

como desde una vista php puede hacer una llamada axax a una ruta index.php?controller=actividad_&accion=list_activi dades
  #8 (permalink)  
Antiguo 04/01/2013, 10:56
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: modelo vista controlador y ajax

Cita:
Iniciado por Montes28 Ver Mensaje
emperar gracias por responder . pero creo que yo no me hice entener, te voy a explicar:

mi aplicacion esta trabajando MVC segun http://www.jourmoly.com.ar/introducc...primera-parte/
en la vista necesito ejecutar un ajax y requiero ejecutar la function login_users() que se encuentra en login_Controller.php

como desde una vista php puede hacer una llamada axax a una ruta index.php?controller=actividad_&accion=list_activi dades
@Montes28
Yo me basé en el objetivo propuesto
Cita:
necesito que si el usuario no ingreso bien el usuario y la clave se muestre un error en el form
este form es lo trabajo como este ejemplo http://aext.net/example/twitterlogin/ , el problema que tengo es que el error se debe visualizar abriendo otra vez el form
corregí este link
www.jourmoly.com.ar/introducc...primera-parte
que se trunca con los puntos suspensivos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #9 (permalink)  
Antiguo 04/01/2013, 11:02
 
Fecha de Ingreso: julio-2012
Mensajes: 4
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: modelo vista controlador y ajax

Hola Montes28, entiendo lo quieres hacer, con un diseño de 3 capas presentacion, dominio y persistencia, la parte de la validacion de los datos puedes hacerla mediante javascript, con algunas condiciones, esto para que los datos puedan ser enviados correctamente , aqui termina la capa de presentacion, aqui enviamos lo datos con Ajax..

un ejemplo facil de validacion usando javascript
if(elNombre.value == ''){
document.getElementById('error_nombre').innerHTML = "Falta nombre";
}

etcc....

Código Javascript:
Ver original
  1. $.ajax({
  2.     type: "POST",
  3.     url: "index.php",
  4.     data: {controller:"login_", accion: "login_users"}
  5.     })

ahora vamonos a la capa de dominio o logica, es donde obtienes los datos enviados desde la presentacion:
//Si estas utilizando una function lo mas correcto deberia ser que pongas fuera los require_once y el $_POST pasarlo por parametro luego llamarlo

Código Javascript:
Ver original
  1. function login_users($_POST['commit']);

en el $_POST al ser un arreglo debes decirle asi $_POST['commit'] aunque no es necesario ya que el evento fue dado por la capa de presentacion y validar si se hace post ya no es necesario.. el evento fue dado por javascript aqui estas listo simplemente para recibir datos..



require 'models/conexion.php';
require 'models/login_Model.php';

function login_users($datos)

{


if(isset($datos))//esta condicion es innecesaria
{
/*aqui persistencia deberias xcrear una funcion que te haga las conexiones previas y valide si conecta o no para no estar poniendolo en todas las veces que lo necesites*/

$lc=new Conexion();
$db = $lc -> conectar();

if (empty($db)){


header("Refresh: 0; URL=/volcanicos/views/error.php");
die();
}else{
$ls = new Login();
$ls -> validate_users($db);
}
}

//require 'views/login.php';
require 'barra.html';//aqui deberia ser include() no require...
}

Espero te sirva
  #10 (permalink)  
Antiguo 04/01/2013, 12:54
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: modelo vista controlador y ajax

gmjun2000 gracias por responder , me confundi un poco estoy implementando lo que me indicas y voy de la siguiente manera


la vista barra.html

Código Javascript:
Ver original
  1. $('#iniciar').click(function(){
  2.     $.ajax({
  3.         type: "POST",
  4.         url: "index.php",
  5.         data: {controller:"login_", accion: "login_users"}
  6.     })
  7.  
  8.     });

Código HTML:
Ver original
  1. <form  action="" method="post" name="frm_login" id="myform1">
  2. <input id="user_username"  type="text" name="usuario"
  3. <input name="clave" type="password"  id="clave"/>
  4. <input name="Submit" type="submit"  id="iniciar" value="Iniciar Sesión"/>

me confundo un poco con esta parte que me indicas
Cita:
en el $_POST al ser un arreglo debes decirle asi $_POST['commit'] aunque no es necesario ya que el evento fue dado por la capa de presentacion y validar si se hace post ya no es necesario.. el evento fue dado por javascript aqui estas listo simplemente para recibir datos..



require 'models/conexion.php';
require 'models/login_Model.php';

function login_users($datos)

{


if(isset($datos))//esta condicion es innecesaria
{
/*aqui persistencia deberias xcrear una funcion que te haga las conexiones previas y valide si conecta o no para no estar poniendolo en todas las veces que lo necesites*/

$lc=new Conexion();
$db = $lc -> conectar();

if (empty($db)){


header("Refresh: 0; URL=/volcanicos/views/error.php");
die();
}else{
$ls = new Login();
$ls -> validate_users($db);
}
}

//require 'views/login.php';
require 'barra.html';//aqui deberia ser include() no require...
}



este es mi login_Controller.php
Código PHP:
Ver original
  1. function login_users()
  2.    
  3.     {
  4.    
  5.           require 'models/conexion.php';       
  6.           require 'models/login_Model.php';
  7.    
  8.        if($_POST)
  9.         {
  10.  
  11.  
  12.               $lc=new Conexion();
  13.               $db = $lc -> conectar();
  14.                
  15.               if (empty($db)){
  16.              
  17.              
  18.         header("Refresh: 0; URL=/volcanicos/views/error.php");
  19.         die();
  20.                 }else{             
  21.               $ls = new Login();
  22.               $ls -> validate_users($db);
  23.                 }
  24.         }
  25.        
  26.    
  27.         require 'barra.html';
  28.     }

Etiquetas: ajax, controlador, formulario, modelo, vistas, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:00.