{"id":5371,"date":"2026-01-19T17:34:10","date_gmt":"2026-01-19T16:34:10","guid":{"rendered":"https:\/\/sutilweb.eu\/?page_id=5371"},"modified":"2026-01-19T17:34:11","modified_gmt":"2026-01-19T16:34:11","slug":"52-vistas-en-php","status":"publish","type":"page","link":"https:\/\/sutilweb.eu\/index.php\/lenguajes\/php\/php-practico\/52-vistas-en-php\/","title":{"rendered":"52. Vistas en PHP"},"content":{"rendered":"\n<p>En este cap\u00edtulo vamos a trabajar con las vistas que se van a mostrar, para ello vamos a crear una carpeta denominada <em>resources,<\/em> y dentro de ella vamos a crear una carpeta denominada <em>views<\/em> que es en la que vamos a trabajar en este cap\u00edtulo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Esquema hasta ahora<\/h2>\n\n\n\n<p>Hasta ahora el esquema de nuestra app es el siguiente:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>app<\/em>\n<ul class=\"wp-block-list\">\n<li><em>Controllers<\/em>\n<ul class=\"wp-block-list\">\n<li>Controller.php\u00a0<\/li>\n\n\n\n<li><em>HomeController.php<\/em><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><em>Models<\/em><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><em>lib<\/em>\n<ul class=\"wp-block-list\">\n<li><em>Route.php<\/em><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><em>public<\/em>\n<ul class=\"wp-block-list\">\n<li><em>css<\/em><\/li>\n\n\n\n<li><em>img<\/em><\/li>\n\n\n\n<li><em>js<\/em><\/li>\n\n\n\n<li><em>.htaccess<\/em><\/li>\n\n\n\n<li><em>index.php<\/em><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><em>resources<\/em>\n<ul class=\"wp-block-list\">\n<li><em>css<\/em><\/li>\n\n\n\n<li><em>js<\/em><\/li>\n\n\n\n<li><em>views<\/em>\n<ul class=\"wp-block-list\">\n<li><em>home.php<\/em><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><em>routes<\/em>\n<ul class=\"wp-block-list\">\n<li><em>web.php<\/em><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><em>.htaccess<\/em><\/li>\n\n\n\n<li><em>autoload.php<\/em><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Por qu\u00e9 crear la carpeta resources<\/h2>\n\n\n\n<p>En esta carpeta, adem\u00e1s de crear las vistas, vamos a incluir c\u00f3digo <strong>css<\/strong> y tambi\u00e9n c\u00f3digo <strong>JavaScript.<\/strong> La diferencia entre los archivos css y JavaScript que coloquemos aqu\u00ed con respecto a los de la carpeta <em>public<\/em> es que el c\u00f3digo de la carpeta <em>resources<\/em> es c\u00f3digo que en teor\u00eda deber\u00edamos compilar por ejm con preprocesadores como <strong>Sass, Webpack&#8230;<\/strong> Una vez se compile, esa compilaci\u00f3n colocarla en la carpeta public para poder acceder a dichos archivos. A\u00fan no sabemos si vamos a compilar alg\u00fan c\u00f3digo, pero de paso lo dejamos preparado.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vistas<\/h2>\n\n\n\n<p>Las vistas se van a tratar de un documento <strong>PHP<\/strong> que va a mostrar <strong>HTML<\/strong>. Por ejm vamos a crear un vista denominada <em>home.php<\/em> que lo que queremos que nos retorne es un documento HTML.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Paso de par\u00e1metros a nuestra vista<\/h2>\n\n\n\n<p>Ahora vamos a ver como pasar par\u00e1metros a nuestra vista y poder imprimirlos. Para ello vamos a ir al archivo Controllers\/<em>HomeController.php&nbsp;<\/em>y haremos las modificaciones oportunas.<\/p>\n\n\n\n<p>Estos son los archivos que hemos modificado en este cap\u00edtulo.<\/p>\n\n\n\n<p><em>HomeController.php<\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nnamespace App\\Controllers;\n\nclass HomeController extends Controller {\n  public function index(){\n    \/\/ M\u00e9todo que se encarga de incluir toda la l\u00f3gica necesaria para mostrar contenido\n    return $this->view('home', &#91;\n      'title' => 'Home',\n      'description' => 'Esta es la p\u00e1gina Home'\n    ]);\n  }\n}<\/code><\/pre>\n\n\n\n<p><em>Controller.php<\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nnamespace App\\Controllers;\n\nclass Controller {\n  public function view($route, $data = &#91;]){\n\n    \/\/ Destructurar el Array\n    extract($data);\n\n    $route = str_replace('.', '\/', $route);\n\n    if(file_exists(\"..\/resources\/views\/{$route}.php\")){\n      ob_start();\n      return include \"..\/resources\/views\/{$route}.php\";\n      $content = ob_get_clean();\n\n      return $content;\n    } else {\n      return \"El archivo no existe\";\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<p><em>home.php<\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html>\n&lt;html lang=\"en\">\n&lt;head>\n  &lt;meta charset=\"UTF-8\">\n  &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  &lt;title>Document&lt;\/title>\n&lt;\/head>\n&lt;body>\n  &lt;h1>Hola desde la p\u00e1gina Home&lt;\/h1>\n\n  &lt;p>T\u00edtulo: &lt;?= $title ?>&lt;\/p>\n  &lt;p>Descripci\u00f3n: &lt;?= $description ?>&lt;\/p>\n&lt;\/body>\n&lt;\/html><\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>En este cap\u00edtulo vamos a trabajar con las vistas que se van a mostrar, para ello vamos a crear una [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":4518,"menu_order":51,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-5371","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Sutil Web","author_link":"https:\/\/sutilweb.eu\/index.php\/author\/sutilweb\/"},"uagb_comment_info":0,"uagb_excerpt":"En este cap\u00edtulo vamos a trabajar con las vistas que se van a mostrar, para ello vamos a crear una [&hellip;]","_links":{"self":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/5371","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/comments?post=5371"}],"version-history":[{"count":2,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/5371\/revisions"}],"predecessor-version":[{"id":5373,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/5371\/revisions\/5373"}],"up":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/4518"}],"wp:attachment":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/media?parent=5371"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}