Yo lo que hago (y seguramente algunos de los expertos aqui diran que no es lo correcto) es dentro de un controlador (que representa una accion en el sistema) hacer todos los metodos para esa accion y la cantidad de vistas necesarias, por ejemplo tendria un controlador index donde pregunto si el usuario no esta logueado que muestre el login y si esta logueado que lo redireccione al controlador usuario:
Código PHP:
Ver originalclass indexController extends Controller{
public function index(){
if($this->Session->get('user')){
$this->url->redirect(index.php?controlador=usuario');
}
else{
$this->vista->Show('login.html');
}
}
}
y en los otros dos casos, lo que haría yo es tener un controlador con los "controles" para el usuario logueado con su correspondiente vista, y otro controlador para cuando hay descargas con sus correspondientes listas.
Y hacer el condicional en una barra de menu que puede estar en cualquier archivo htlm que despues los incluyas en la vista de los usuarios logueados
Es una forma nose si la correcta pero es una alternativa...
En resumen (y si estoy equivocado corregirme) un controlador puede tener n cantidad de vistas, por ejemplo puedes tener un controlador con 4 métodos:index, nuevo, editar, grabar, guardar, borrar.
el método index tendra si vista index.html
los metodos nuevo y editar puede compartir la vista formulario.html o pueden tener una vista para cada método
y los metodos grabar, guardar y borrar, no tienen vistas sino que segun el resultado te envian al index o al formulario.
Espero que te haya ayudado en algo.
salu2