Nueva pregunta

Pregunta:

Fecha: 21-01-2016 13:11:56 (En Español)

Problema con variables en vistas MVC[Resuelta]

hola tengo un problema al momento de imprimir una variables en distintas vistas
al cargar la primera vista todo funciona muy bien pero al momento de cambiar la vista esta falla y me indica que no se a definido la variable les dejo fragmentos del código
Vista que funciona perfecta mente
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!--css
    <link rel='stylesheet' href='//cdnjs.cloudflare.com/ajax/libs/angular-loading-bar/0.7.1/loading-bar.min.css' type='text/css' media='all' />

  -->
    <?=$app['Logo']  ?><?=$app['font-awesome']  ?><?=$app['Css-bootstrap']  ?><?=$app['Style']?>
    <?=$app['angular'] ?><?=$app['angularjs']?><?=$app['aliCache']?> <?=$app['angularLoabi']?> <?=$app['buscar']?>




vista 2
   	<?=$app['log']?>
	    <!-- estilo principal -->
	    <?=$app['registro']?>
	    <!--Bootstrap-->
	    <?=$app['Css-bootstrap']?> <?=$app['font-awesome']?>

Notice: Undefined variable: app in C:\xampp\htdocs\Moppyz\template\views\login.blade.php on line 10
Notice: Undefined variable: app in C:\xampp\htdocs\Moppyz\template\views\login.blade.php on line 15
Notice: Undefined variable: app in C:\xampp\htdocs\Moppyz\template\views\login.blade.php on line 18
Notice: Undefined variable: app in C:\xampp\htdocs\Moppyz\template\views\login.blade.php on line 18

si uso un print_r($app) solo meda las posiciones del array sin ningún valor
Etiquetas: MVC - PHP - Pregunta - Variables Votos: 3 - Respuestas: 7 - Vistas: 18 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 21-01-2016 17:33:42 Hola,
    Tal vez si postear un poco más del código pueda ayudarte.

    Pero lo que veo más o menos es que de pronto no estás incluyendo el archivo dónde está la variable.
    Salu2
      Votos: 1 - Link respuesta
     
  • Fecha: 22-01-2016 03:30:03 Hola Andy, puede que tengas un problema de scope de la variable como menciona Edinson, aunque yo lo descartaría porque al hacer un print_r($app) te esta dando información (aunque no la esperada).

    Estos casos son dificiles de resolver si no se tiene un proceso de debug. Te recomiendo hacer un debug de tu código, por ejemplo con XDEBUG, a fin de determinar como se cargar la variable $app y si en algun momento es sobreescrita, etc...

    Por otro lado, se necesita mayor detalle para que tu pregunta pueda ser correctamente interpretada, por ejemplo no esta claro que framework usas... (asumo que es Laravel, pero no se porque no lo comentas...).

    Saludos,
      Votos: 2 - Link respuesta
     
  • Fecha: 22-01-2016 03:47:46 Index.php
    <?php
    /**
     * Created by PhpStorm.
     * User: aj
     * Date: 17/01/16
     * Time: 09:55 PM
     */
    // Dividimos la URL.
    $request = explode( '/', $_SERVER['REQUEST_URI'] );
    // Eliminamos los espacios del principio y final
    // y recalculamos los el vector eliminando los espacios
    $request = array_values( array_filter( $request) );
    function studlyCase( $value )
    {
    	
    	if($value!=""){
    		$value = ucwords(str_replace(array('-', '_'), ' ', $value));
    		return str_replace(' ', '', $value);
    	}else{
    		throw new RuntimeException('Ruta no encontrada <code>'.$value.'</code>',404);
    	}
    }
    // Configuración. 
    //definimos como costantes las siguientes expreciones
    define( 'CONTROLLER_PATH', 'Controllers/' );
    define( 'EXT', '.php' );
    if($request[0]=='Moppyz') {
    	unset($request[0]);
    	for ($i = 0; $i <= count($request); $i++) {
    		if (!empty($request[$i])) {
    			$requestURI[$i - 1] = $request[$i];
    		}
    	}
    }
    if ( empty( $requestURI[0] )) {
    	// Página principal.
    	require_once('Config/Config.php');
    	if(is_file('template/views/welcome.blade.php'))
    	{
    		require_once('template/views/welcome.blade.php');
    	}else{
    		echo "nada por hacer";
    	}
    	
    }
    else
    {
    	
    	try
    	{
    		// Guardamos el nombre del controlador y la
    		// ruta de su archivo para utilizarlas más tarde.
    		$controllerName = studlyCase( $requestURI[0] );
    		$controllerPath = CONTROLLER_PATH . $controllerName . EXT;
    		// Guardamos el nombre del método a llamar.
    		
    		$method = $controllerName . '::' . studlyCase( $requestURI[1] );
    		// Eliminamos el controlador y el método de
    		// $requestURI para quedarnos sólo con los parámetros.
    		
    		$arguments = array_slice( $requestURI, 2 );
    		// Comprobamos que el archivo del controlador existe.
    		if ( ! file_exists( $controllerPath ) ) {
    			throw new DomainException( 'El archivo <code>' . $controllerPath . '</code> no existe.', 404 );
    		}
    		// Cargamos el archivo.
    		require_once $controllerPath;	
    		// Comprobamos que el archivo contenga el controlador.
    		if ( ! class_exists( $controllerName ) ) {
    			throw new RuntimeException( 'El archivo <code>' . $controllerPath . '</code> debe contener un objeto <code>' . $controllerName . '</code>.' );
    		}
    		// Comprobamos que el método definido en la URL esté disponible.
    		if ( ! is_callable( $method ) ) {
    			throw new DomainException( 'El archivo <code>' . $controllerPath . '</code> no contiene un método <code>' . $requestURI[1] . '</code>.', 404 );
    		}
    		// Creamos un nuevo método reflejo de $method.
    		$reflection = new ReflectionMethod( $method );
    		// Comprobamos que la URL tiene todos los
    		// parámetros requeridos por el método.
    		if ( $reflection->getNumberOfRequiredParameters() > count( $arguments ) ) {
    			throw new DomainException( 'No hay suficientes parámetros como para ejecutar el método <code>' . $method . '</code>', 404 );
    		}
    		// Llamamos a la función.
    		call_user_func_array( $method, $arguments );
    	}
    	catch ( RuntimeException $e ) {
    		echo $e->getMessage();
    	}
    	catch ( DomainException $e ) {
    		echo '<strong>Error ' . $e->getCode() . '</strong>: ' . $e->getMessage();
    		// O bien escribimos un mensaje de página no encontrada.
    	}
    }
    


    Configuración.PHP
    require_once('template/rutas.php');
    require_once('template/imgs.php');
    require_once('Autoload.php');

    <?php
    /**
     * Created by PhpStorm.
     * User: aj
     * Date: 17/01/16
     * Time: 10:00 PM
     */
    function app()
    {
        return array(
            "Logo" => "<link href='public/Imagenes/iconos/logotipo.png' rel='shortcut icon' type='image/png'>",
            "font-awesome" => '<link rel="stylesheet" type="text/css" href="public/font-awesome/css/font-awesome.css">',
            "Css-bootstrap" => '<link href="public/css/bootstrap.css" rel="stylesheet">',
            "Style" => '<link rel="stylesheet" href="public/css/style.css">',
            "aliCache" => '<script src="public/js/cssrefresh.js"></script>',
            'angularLoabi' => "<script type='text/javascript' src='//cdnjs.cloudflare.com/ajax/libs/angular-loading-bar/0.7.1/loading-bar.min.js'></script>",
            "angular" => '<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js" type="text/javascript" ></script>',
            "angularjs"=>'<script src="public/Angularjs/angular.js" ></script>',
            "buscar" => '<script src="public/Angularjs/buscador.js"></script>',
            'app'=>'<script type="text/javascript" src="public/Angularjs/app.js" ></script>',
            'jquery'=>'<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>',
            'jsBootstrap'=>   '<script src="public/js/bootstrap.min.js"></script>',
            "http"=>'<script src="public/Angularjs/http.js" ></script>',
            "fact"=>'<script src="public/Angularjs/factory.js"></script>',
        );
    }
    $app = app();
    

    Welcome.blade.php
    <!DOCTYPE html>
    <html lang="es">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        
    
        <!--css
        <link rel='stylesheet' href='//cdnjs.cloudflare.com/ajax/libs/angular-loading-bar/0.7.1/loading-bar.min.css' type='text/css' media='all' />
      -->
        <?=$app['Logo']  ?><?=$app['font-awesome']  ?><?=$app['Css-bootstrap']  ?><?=$app['Style']?>
        <?=$app['angular'] ?><?=$app['angularjs']?><?=$app['aliCache']?> <?=$app['angularLoabi']?> <?=$app['buscar']?>
    
        <!-- Bootstrap -->
    
    
        <style type="text/css">
            @import url(https://fonts.googleapis.com/css?family=Roboto:400,300italic,700|Asap););
            body{
                font-family: 'Roboto', sans-serif;
            }
            .letter2{
                font-family: 'Asap', sans-serif;
            }
            .btn{
                border-radius: 2px;
            }
        </style>
        <?=$app['app']?>
    
    </head>
    


    Registro .PHP[
    code=php]
    DOCTYPE html>
    <html lang="es">
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">


    <!--css
    <link rel='stylesheet' href='//cdnjs.cloudflare.com/ajax/libs/angular-loading-bar/0.7.1/loading-bar.min.css' type='text/css' media='all' />
    -->
    <?=$app['Logo'] ?><?=$app['font-awesome'] ?><?=$app['Css-bootstrap'] ?><?=$app['StyleRegistro']?>
    <?=$app['angularjs']?><?=$app['aliCache']?> <?=$app['angularLoabi']?> <?=$app['buscar']?><=$app['http']?>




    <!-- Bootstrap -->


    <style type="text/css">
    @import url(https://fonts.googleapis.com/css?family=Roboto:400,300italic,700|Asap););
    body{
    font-family: 'Roboto', sans-serif;
    }
    .letter2{
    font-family: 'Asap', sans-serif;
    }
    .btn{
    border-radius: 2px;
    }
    </style>
    <?=$app['app']?>

    </head>[/code]
      Votos: 1 - Link respuesta
     
  • Fecha: 22-01-2016 04:38:20 Estoy trabajándolo con php puro
    Aún que usos las vistas como si fueran laravel con la extensión de blade,
    Es para una prueba que quería hacer
      Votos: 1 - Link respuesta
     
  • Fecha: 22-01-2016 06:10:08 Hola, no veo ningún error pero hay algo que me tiene intrigado y es que a ti te lanza error es login.blade.php

    Y no veo dónde lo estas usando.

    Salu2
      Votos: 0 - Link respuesta
     
  • Fecha: 22-01-2016 06:39:02 En index leo la url cargo un controlador un método y un parámetro que seria la vista

    Miweb/view/Info/login
    Les comparto el código de la clase
    <?php
    /**
     * Created by PhpStorm.
     * User: Andy Martinez
     * Date: 20/01/2016
     * Time: 6:41 PM
     */
    class View
    {
        public static  function info($view)
        {
            define('path','template/views/');
            define('exp','.blade.php');
            if(file_exists(path.$view.exp)){
                require_once (path.$view.exp);
            }else{
                throw new RuntimeException('Error de pagina ',404);
            }
        }
    
      Votos: 1 - Link respuesta
     
  • Fecha: 26-01-2016 13:20:44 el problema es que ocupas mas niveles

    imaginemos /web/vista/info

    Si tus archivos estan en "web" tendrias que regresarte 2 posiciones para poder ingresar un archivo, es decir:

    '../../archivo_en_carpeta_web.php'


    si aumentas más niveles por ejemplo /web/vista/info/crear

    ahora necesitarás retornar 3 posiciones, eso en caso de utilizar url relativas.

    Es por eso que no funciona, tu lógica de vistas. Haz un debug y ve la ruta que te devuelve :)


    Saludos.
      Votos: 2 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com