No tienes acceso a esta clase

¬°Contin√ļa aprendiendo! √önete y comienza a potenciar tu carrera

Views

9/14
Recursos

Aportes 32

Preguntas 7

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Increíble la capacidad pedagógica para explicar algo tan complejo como un framework web. Palmas para el profe.

El sistema de plantillas es algo que me cost√≥ trabajo aceptar, pero la verdad es que si hace m√°s f√°cil el maquetado, ya no se usa include ‚Äúheder.php‚ÄĚ o include ‚Äúfooter.php‚ÄĚ etc. Ahora se suele centrar todo el contenido html de la web en una plantilla base con los elementos comunes, y cargar din√°micamente el contenido que queremos mostrar, y es justo eso lo que hace la variable $content, esa variable est√° guardando la vista que necesitamos y es mandada a llamar en la plantilla, es por eso que nos permite hacer la carga de una manera m√°s din√°mica

Reto cumplido:

Buena explicación y resumen del **flujo **en los Frameworks. Es complicado de entender e incluso un poco lioso, pero lo vas explicando poco a poco.

Mi aporte cuando no existe el controlador o el método.

public function send()                                                                                                                                {                                                                                                                                                      
  $controller=$this->get_controller();                                                                                                               
  $method = $this->get_method();                                                                                                                     
         
                                                                                                                                                   			 
   if(class_exists($controller))                                                                                                                               
   {                                                                                                                                                  
      $object = new $controller;                                                                                                                                  
      if(method_exists($object,$method))                                                                                                             
      {                                                                                                                                              
         $response = call_user_func([                                                                                                                           
               $object,                                                                                                                               
               $method                                                                                                                                
              ]);                                                                                                                                        
      }else                                                                                                                                          
      {   
          // si no existe el metodo llamo al index del controlador                                                                                                                                           
          $response = call_user_func([$object,'index']);                                                                                             
      }                                                                                                                                              
      }else                                                                                                                                              
      {    
         // si no existe el controlador lo redirijo al home                                                                                                                                              
         $response = call_user_func([new Home,'index']);                                                                                                
      } 
}

He notado que cuando usamos tecnologías como bootstrap no se respeta la semantica

Tanto Frameworks como librer√≠as imponen sus convenciones y reglas, una que me llama la atenci√≥n es el uso de la etiqueta div para maquetar todo. ¬ŅD√≥nde queda la sem√°ntica a la hora de elegir estas herramientas? ¬ŅSe ve afectada? ¬ŅC√≥mo la implementan?

Desde hace unas clases atras tengo un problema con las vistas y el método Request.

El error:


Fatal error: Uncaught Error: Class 'App\Http\Controllers\DataController' not found in C:\xampp\htdocs\Data\PHP\CursoPlatzi\IntroFrameworks\app\Http\Request.php:49 Stack trace: #0 C:\xampp\htdocs\Data\PHP\CursoPlatzi\IntroFrameworks\public\index.php(7): App\Http\Request->send() #1 {main} thrown in C:\xampp\htdocs\Data\PHP\CursoPlatzi\IntroFrameworks\app\Http\Request.php on line 49

Y el Request

namespace App\Http;

class Request {

  protected $segments = [];
  protected $controller;
  protected $method;
  

  public function __construct(){

    // platzi.test/servicios
    $this->segments = explode('/', $_SERVER['REQUEST_URI']);
    
    $this->setController();
    $this->setMethod();

  }

  //Setteando metodos 
  public function setController(){
    $this->controller = empty($this->segments[1]) ? 'home' : $this->segments[1];
  }
  
  public function setMethod(){
    $this->method = empty($this->segments[2]) ? 'index' : $this->segments[2];
  }

  //Obteniendo los datos
  public function getController(){
    //home, HomeController
    $controller = ucfirst($this->controller);

    return "App\Http\Controllers\\{$controller}Controller";
  }

  public function getMethod(){
    
    return $this->method;
  }

  public function send(){

    $controller = $this->getController();
    $method = $this->getMethod();

    $response = call_user_func([new $controller, $method]);

    $response->send();
  
  }
  
}

Y la linea que marca el error es esta:

 $response = call_user_func([new $controller, $method]);

help? :c

Reto cumplido
1. Crear los archivos ContactController.php y ServiceController.php en la carpeta controllers.
.

.

.
2. Crear vistas service.php y contact.php en la carpeta vistas.
.

.

.
3. A√Īadir los enlaces en el nav de layout.php que se encuentra en la carpeta views.
.

.
Listo
.

Listo!!

Aporte del reto

Flujo de información del Framework

Reto de clase

Primero cree los controladores de contact y service

ContactController.php

<?php

namespace App\Http\Controllers;

use App\Http\Response;

class ContactController
{
    public function index()
    {
        return new Response('contact');
    }
}

ServiceController.php

<?php

namespace App\Http\Controllers;
use App\Http\Response;

class ServiceController
{
    public function index()
    {
        return new Response('Service');
    }
}

Resultados

¡Excelente explicación!

Listo!

Misión cumplida!!
Me siento muy feliz de entender la estructura del proyecto y poder modificarlo a mis necesidades.

<?php

namespace App\Http\Controllers;
use App\Http\Response;


class ContactosController{
    public function index()
    {
        return new Response('contactos');
    }
}
<div class="col-8">
    <h1>Pagina de Contactos</h1>
    <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Fugit similique, nulla officiis, optio velit error placeat nemo dolor soluta minima quae nam inventore ut atque consequatur officia a. Officiis, temporibus.</p>
</div>

<?php

namespace App\Http\Controllers;
use App\Http\Response;

class ServiciosController
{
    public function index()
    {
        return new Response('servicios');
    }
}
<div class="col-8">
    <h1>Pagina de Servicios</h1>
    <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Fugit similique, nulla officiis, optio velit error placeat nemo dolor soluta minima quae nam inventore ut atque consequatur officia a. Officiis, temporibus.</p>
</div>

Así es como me quedo, debo decir que fue un poco complicado ya que no se usar bootstrap:

Uno de los mayores retos de un profesor es convertir lo abstracto y conceptual, en algo tangible, físico y fácil de memorizar.

Hice el reto y dejo mis resultados. El dise√Īo es de este buen chico: https://krystonschwarze.com/
Solo le cambie el brand por mis iniciales jeje, pero les dejo el link, dise√Īos chidos e inspiradores.

Aunque aun no se como hacer por ejemplo que quiza en el de servicios tambien se pueda ver el home, no encontre como hacerlo, quise implementar otro tipo de tarjetitas para services, pero como no sabia enlazarlo lo deje por separado.

PD. Ojala me lea el profe y me diga mas o menos donde o que debo de investigar para unir todas las vistas o… lo diga en las proximas clases.

Home

Services

Contact

Complete los ejercicios ūüėĄ

Contacto

Servicios

Reto cumplido ūüíö

.

ūüŹ°P√°gina /Home
.


.
ūüí≥P√°gina Servicios
.


.

ūüď¨Pagina Contacto
.

.

‚úÖEl aprender a usar vistas en PHP/Laravel es muy importante ya dentro de ellas podemos generar el formatos para documentos b√°sico o complejos que nos solicite nuestro trabajo.

Ahora el uso de platillas es poderoso, podemos dividir toda una estructura en micro componente que pueden reutilizarse un sin fin de veces, lo cual nos agilizará el mantenimiento de nuestro sistema, y evitará el dolor de cabeza de buscar donde cerramos mal una etiqueta en un archivo grandísimo.

Listo!, reto cumplido!

El link para bootstrap:

<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">

Excelente

Con el reto propuesto por el profesor italo y apoyandome de las respuestas de algunos compa√Īeros pude resolver el reto y me volo la cabeza del potencial de la arquitectura MVC.

Ahora sigamos practicando, no nos demos por vencidos cracks.

con mucho esfuerzo llegue aquí

Qué buena manera de explicar! he entendido perfectamente! muchas gracias!!

Challenge =>

Request.php

<?php
namespace App\Http;

require_once __DIR__ . "/../Http/Controllers/HomeController.php";/* Error */
require_once __DIR__ . "/../Http/Controllers/ServicesController.php";/* Error */
require_once __DIR__ . "/../Http/Controllers/ContactsController.php";/* Error */

ContactsController.php

<?php
namespace App\Http\Controllers;

require_once __DIR__ . "/../Response.php"; /* Error */
use App\Http\Response;

class ContactsController {
  public function index() {
    return new Response("contacts");
  }
}

contacts.php

<div class="col-8">
  <h1>P√°gina Contacts</h1>
  <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Similique aperiam vitae harum impedit voluptas, nesciunt consequatur iste odio mollitia saepe commodi cum culpa delectus pariatur, nobis quibusdam temporibus cupiditate quaerat.</p>
</div>

que buena explicaci√≥n ūüĎĆ

Mi p√°gina layout estaba vac√≠a al imprimir el home. Lo que pas√≥ es que al abrir las etiquetas php e imprimir $content, las abr√≠ de la forma ‚Äúbreve‚ÄĚ (<? ?>). En lugar de ‚Äú<?php ?>‚ÄĚ ūüėÖ

Excelente manera de explicar con simplicidad el proceso de ingenieria que llevan Laravel y la mayoria de los frameworks de PHP, Increible como algo tan Complejo es explicado de una manera tan sencilla… Tienes el Dn de Maestro de Programacion!!! Excelente Curso Italo…

Excelente clase Italo…