Problema con variable en template para mostrar en vistas del SCAFFOLD Spirit 1.0 Beta2

Hola amigos he creado un template que contiene una variable que se define en cada controlador que voy creando para la aplicacion, esta variable no hace mas que mostrar el usuario logueado para la sesión y esta ubicado en la cabecera del template. Para definidir esta variable según la vista en la que estará la defino en cada controlador, para los controladores de la clase AppController no tengo mayores inconvenientes: 
Por ejemplo:
En PrincipalController, para vista "login" defino la variable directamente así:
<?php
class PrincipalController extends AppController{

public function login(){
View::template('r412');
$this->usuario='iniciar sesión';
        if (Input::hasPost("login","password")){
            $pwd = Input::post("password");
            $usuario=Input::post("login");
 
            $auth = new Auth("model", "class: usuarios", "login: $usuario", "password: $pwd");
            if ($auth->authenticate()) {
                Router::redirect("saludo/formulario");
            } 
else {
                Flash::error("Falló");
            }
        }
    }
}
?>
En SaludoController, para vista "formulario" defino la variable mediante "if" así:
<?php
class SaludoController extends AppController {

    public $limit_params = False;
public function formulario(){

View::select('formulario','r412');
if(Auth::is_valid()){
$this->usuario=Auth::get('login');
}
}

Para ambos casos arriba mencionados es correcto el resultado, pues en la primera vista "login" que es un formulario de inicio de sesion es suficiente el mensaje 'iniciar sesion'; para la segunda vista "formulario", luego de haber iniciado la sesión me muestra el nombre del usuario logueado.

También cree el controlador guiasdeservicio_controller el cual hereda de scaffoldcontroller, Generando los respectivos formularios autogenerados propios de nuestro Framework. Para unificar el diseño de mi aplicación inserto el template 'r412' con 'view::template()' y solo que me quedaria definir la variable del template para las vistas del scalffold la verdad que soy principiante en el manejo de codigo y no encuentro la forma de lograrlo, pues lo intente en muchas maneras y todas me arrojan errores de sintaxis. Necesito obtener como resultado el mismo que para la vista "formulario" en la que me muestre el nombre del usuario logeado sin embargo no logro encontrar el sitio donde debo insertar el código:
if(Auth::is_valid()){
$this->usuario=Auth::get('login');
}
Aqui muestro el codigo del controlador guiasdeservicio_controller:

<?php
view::template('r412');
class GuiasdeservicioController extends ScaffoldController {
public $model ='guiasdeservicio';
public $usuario='usuario logueado'; //**puedo incluir solo texto entre comillas en esta linea**//
}

Como verán no logro introducir el condicional "if" que me devuelve el 'usuario logueado' como en la vista "formulario", por favor si alguien me puede ayudar con esto cual deberia ser la sintaxis correcta para lograr mostrar lo indicado.

Saludos
Pp Jaramillo

Comentarios

  • edited noviembre 2012
    Hola,
    ponerlo en cada controller y acción no es la forma correcta.

    Si lo quieres para todo el controller, lo correcto es ponerlo en el before_filter() de los controladores que quieras.

    Si lo quieres para todos los controladores, lo mejor es ponerlo en el initialize() del AppController, que esta en app/libs/

    Para el escaffold es lo mismo
    En el before_filter del controlador que quieras.
    Y en el initialize() del ScaffoldController, para todos los controladores que heredan de el y que tambien esta en app/libs/

    Esa es la forma correcta y más fácil y sobre todo no te repites
    Si tienes alguna consulta más avisas.

    Saludos

  • Gracias Joanhey:
    Lo implementare y si tengo alguna otra consulta, duda o problema, siempre estaremos en contacto por esta vía;
    por cierto super bueno el FRAMEWORk es un exito lo recomiendo para todos.
    A pesar que aun estoy en pañales es muy facil y amigable 
    Saludos.
Sign In or Register to comment.