<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>crud archivos - KumbiaPHP Framework PHP en español</title>
	<atom:link href="https://kumbiaphp.com/blog/tag/crud/feed/" rel="self" type="application/rss+xml" />
	<link>https://kumbiaphp.com/blog/tag/crud/</link>
	<description>Web &#38; app MVC PHP framework</description>
	<lastBuildDate>Wed, 29 Apr 2020 23:28:19 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>

<image>
	<url>https://kumbiaphp.com/blog/wp-content/uploads/2016/01/250-150x150.png</url>
	<title>crud archivos - KumbiaPHP Framework PHP en español</title>
	<link>https://kumbiaphp.com/blog/tag/crud/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">123854898</site>	<item>
		<title>ScaffoldController: Modificando comportamientos y contenidos</title>
		<link>https://kumbiaphp.com/blog/2017/04/12/scaffolding-con-kumbiaphp-modificando-comportamientos-y-contenidos-segun-nuestra-necesidad/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=scaffolding-con-kumbiaphp-modificando-comportamientos-y-contenidos-segun-nuestra-necesidad</link>
					<comments>https://kumbiaphp.com/blog/2017/04/12/scaffolding-con-kumbiaphp-modificando-comportamientos-y-contenidos-segun-nuestra-necesidad/#comments</comments>
		
		<dc:creator><![CDATA[Nelson Rojas]]></dc:creator>
		<pubDate>Wed, 12 Apr 2017 13:28:01 +0000</pubDate>
				<category><![CDATA[ActiveRecord]]></category>
		<category><![CDATA[Documentación]]></category>
		<category><![CDATA[Tutoriales y screencast]]></category>
		<category><![CDATA[crud]]></category>
		<category><![CDATA[ejemplos]]></category>
		<category><![CDATA[scaffold]]></category>
		<guid isPermaLink="false">https://www.kumbiaphp.com/blog/?p=1344</guid>

					<description><![CDATA[<p>La entrega anterior hablamos acerca del uso de la técnica de Scaffolding para CRUD con KumbiaPHP usando la clase&#8230;</p>
<p>La entrada <a href="https://kumbiaphp.com/blog/2017/04/12/scaffolding-con-kumbiaphp-modificando-comportamientos-y-contenidos-segun-nuestra-necesidad/">ScaffoldController: Modificando comportamientos y contenidos</a> se publicó primero en <a href="https://kumbiaphp.com/blog">KumbiaPHP Framework PHP en español</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>La entrega anterior hablamos acerca del uso de la técnica de<a href="https://www.kumbiaphp.com/blog/2017/04/03/scaffolding-para-crud-abm-sencillos-y-no-tanto-primera-parte/"> Scaffolding para CRUD con KumbiaPHP</a> usando la clase <strong>ScaffoldController</strong>. Espero que muchos se hayan sorprendido gratamente con la funcionalidad que ciertamente ahorra mucho trabajo rutinario, ya que es altamente flexible.</p>
<p>Para que se entusiasmen, dentro de las posibilidades  tenemos: reescribir métodos y modificar comportamientos en controladores, modificar los archivos de vista, e incluso puedes crear tus propios scaffoldings. Pero bueno, vamos paso a paso.</p>
<h2>Manos a la obra con ScaffoldController</h2>
<p>Vamos a trabajar en base a supuestos. Supongamos que queremos mostrar el nombre de la categoría padre para aquellas categorías que estén anidadas.</p>
<p><a href="https://www.kumbiaphp.com/blog/wp-content/uploads/2017/04/index-sin-cambios-1.png"><img fetchpriority="high" decoding="async" class="alignnone wp-image-1351 size-full" src="https://www.kumbiaphp.com/blog/wp-content/uploads/2017/04/index-sin-cambios-1.png" alt="Lista de categorías" width="958" height="405" srcset="https://kumbiaphp.com/blog/wp-content/uploads/2017/04/index-sin-cambios-1.png 958w, https://kumbiaphp.com/blog/wp-content/uploads/2017/04/index-sin-cambios-1-300x127.png 300w, https://kumbiaphp.com/blog/wp-content/uploads/2017/04/index-sin-cambios-1-768x325.png 768w, https://kumbiaphp.com/blog/wp-content/uploads/2017/04/index-sin-cambios-1-940x397.png 940w" sizes="(max-width: 958px) 100vw, 958px" /></a></p>
<p>Como se ve en la lista, las categorías relacionadas sólo se ven con su identificador.<br />
Por lo tanto, vamos a modificar <strong>la fuente de datos</strong> que pasamos a la vista <strong>Index</strong> para que ésta pueda presentar los contenidos respectivos.</p>
<h2>En el modelo</h2>
<p>Lo que vamos a hacer es crear un método que cumpla con lo que queremos lograr: mostrar el contenido de la tabla de categorías incluyendo el nombre de la categoría padre en aquellas categorías que heredan de otra. De este modo tendremos una modificación como la siguiente:</p>
<p>Archivo: <em>models/categorias.php</em></p>
<pre class=" language-php"><code class=" language-php">&lt;span class=&quot;token delimiter&quot;&gt;&lt;?php&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Categorias&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ActiveRecord&lt;/span&gt; 
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getCategorias&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$page&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; 
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;paginate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            &lt;span class=&quot;token string&quot;&gt;&#039;columns: categorias.id, categorias.nombre, cat.nombre as categorias_id, categorias.creada_at, categorias.actualizada_in&#039;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 
            &lt;span class=&quot;token string&quot;&gt;&#039;join: left outer join categorias cat on categorias.categorias_id = cat.id&#039;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token string&quot;&gt;&quot;page: $page&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#039;order: categorias.id desc&#039;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;</code></pre>
<h2>En el controlador</h2>
<p>El segundo cambio lo haremos desde el controlador, para cargar los cambios que hemos hecho en el modelo. Lo que <strong>reemplazaremos</strong> (porque es una sobre escritura de index en ScaffoldController) será la función <strong>index</strong> tal como se muestra a continuación.</p>
<p>Archivo: controllers<em>/categorias_controller.php</em></p>
<pre class=" language-php"><code class=" language-php">&lt;span class=&quot;token delimiter&quot;&gt;&lt;?php&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;CategoriasController&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ScaffoldController&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$model&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#039;Categorias&#039;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;index&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$page&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token variable&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;data&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Categorias&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getCategorias&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$page&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
 
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;</code></pre>
<p><span id="more-1344"></span></p>
<h2>Ahora se ve así</h2>
<p>Con esto lograremos que el listado cumpla que el requerimiento solicitado.</p>
<p><a href="https://www.kumbiaphp.com/blog/wp-content/uploads/2017/04/index-con-cambios-1.png"><img decoding="async" class="alignnone wp-image-1352 size-full" src="https://www.kumbiaphp.com/blog/wp-content/uploads/2017/04/index-con-cambios-1.png" alt="Lista modificada de las categorías" width="967" height="400" srcset="https://kumbiaphp.com/blog/wp-content/uploads/2017/04/index-con-cambios-1.png 967w, https://kumbiaphp.com/blog/wp-content/uploads/2017/04/index-con-cambios-1-300x124.png 300w, https://kumbiaphp.com/blog/wp-content/uploads/2017/04/index-con-cambios-1-768x318.png 768w, https://kumbiaphp.com/blog/wp-content/uploads/2017/04/index-con-cambios-1-940x389.png 940w" sizes="(max-width: 967px) 100vw, 967px" /></a></p>
<h2>¿Por qué funciona?</h2>
<p>Como puede verse, con cambios mínimos hemos logrado adecuar la presentación de la vista <strong>index</strong> sin actualizar su archivo. Lo que hemos hecho principalmente es un reemplazo dentro de la metadata de ActiveRecord. Scaffolding espera contar con todos los atributos de la tabla de categorías (id, nombre, categorias_id, creada_at, actualizada_in). Nosotros hemos modificado la salida cambiando categorias_id por nombre desde categorias (nombre as categorias_id). Así hemos logrado que el pintador de la vista index haga su tarea sin enterarse del reemplazo que hemos hecho a nivel de modelo.</p>
<p>Bueno, eso es todo por esta semana. En la siguiente entrega veremos cómo modificar una vista particular para hacerla parecer según nuestros requerimientos. (<a href="https://www.kumbiaphp.com/blog/2017/05/16/scaffoldcontroller-modificando-vistas/">ver parte 3</a>)</p>
<h2>Últimas recomendaciones</h2>
<p>Recuerden que pueden revisar el código desde: <a href="https://github.com/nelsonrojas/Scaffold-KumbiaPHP" target="_blank" rel="noopener noreferrer">https://github.com/nelsonrojas/Scaffold-KumbiaPHP</a></p>
<p>No olvides visitarnos en <a href="http://slack.kumbiaphp.com/" target="_blank" rel="noopener noreferrer">http://slack.kumbiaphp.com/</a> para contarnos cómo te va usando <a href="https://www.kumbiaphp.com" target="_blank" rel="noopener noreferrer">KumbiaPHP</a>. Si necesitas apoyo procuraremos estar atentos. Además, si te gusta lo que escribimos compártelo ya mismo con tus amigos y colegas.</p>
<p>Saludos y larga vida a KumbiaPHP!</p>
<p>Con cariño desde Talca, Chile: <a href="https://twitter.com/nelsonrojas" target="_blank" rel="noopener noreferrer">@nelsonrojas</a></p>
<p>Ps: Si te perdiste lo que escribimos la semana pasada, puedes leerlo aquí: <a href="https://www.kumbiaphp.com/blog/2017/04/03/scaffolding-para-crud-abm-sencillos-y-no-tanto-primera-parte/">https://www.kumbiaphp.com/blog/2017/04/03/scaffolding-para-crud-abm-sencillos-y-no-tanto-primera-parte/</a></p>
<p>Si quieres ver lo que sigue: <a href="https://www.kumbiaphp.com/blog/2017/05/16/scaffoldcontroller-modificando-vistas/">ScaffoldController: Modificando vistas</a></p>
<p>La entrada <a href="https://kumbiaphp.com/blog/2017/04/12/scaffolding-con-kumbiaphp-modificando-comportamientos-y-contenidos-segun-nuestra-necesidad/">ScaffoldController: Modificando comportamientos y contenidos</a> se publicó primero en <a href="https://kumbiaphp.com/blog">KumbiaPHP Framework PHP en español</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://kumbiaphp.com/blog/2017/04/12/scaffolding-con-kumbiaphp-modificando-comportamientos-y-contenidos-segun-nuestra-necesidad/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1344</post-id>	</item>
		<item>
		<title>Scaffolding para CRUD (ABM) sencillos (y no tanto) &#8211; primera parte</title>
		<link>https://kumbiaphp.com/blog/2017/04/03/scaffolding-para-crud-abm-sencillos-y-no-tanto-primera-parte/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=scaffolding-para-crud-abm-sencillos-y-no-tanto-primera-parte</link>
					<comments>https://kumbiaphp.com/blog/2017/04/03/scaffolding-para-crud-abm-sencillos-y-no-tanto-primera-parte/#comments</comments>
		
		<dc:creator><![CDATA[Nelson Rojas]]></dc:creator>
		<pubDate>Mon, 03 Apr 2017 10:39:38 +0000</pubDate>
				<category><![CDATA[ActiveRecord]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutoriales y screencast]]></category>
		<category><![CDATA[crud]]></category>
		<category><![CDATA[ejemplos]]></category>
		<category><![CDATA[scaffold]]></category>
		<guid isPermaLink="false">https://www.kumbiaphp.com/blog/?p=1288</guid>

					<description><![CDATA[<p>¿Qué es Scaffolding? Cuando comenzó el fenómeno de los frameworks de desarrollo web, una de sus banderas de lucha&#8230;</p>
<p>La entrada <a href="https://kumbiaphp.com/blog/2017/04/03/scaffolding-para-crud-abm-sencillos-y-no-tanto-primera-parte/">Scaffolding para CRUD (ABM) sencillos (y no tanto) &#8211; primera parte</a> se publicó primero en <a href="https://kumbiaphp.com/blog">KumbiaPHP Framework PHP en español</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>¿Qué es Scaffolding?</h2>
<p>Cuando comenzó el fenómeno de los frameworks de desarrollo web, una de sus banderas de lucha estuvo de la mano de los scaffoldings (andamios).</p>
<p>Un scaffold es en sí una técnica que proveen muchos frameworks, con la que podrás tener un gestor de datos para una tabla particular escribiendo una cantidad mínima de código (en KumbiaPHP bastan 7 líneas de código – excluyendo 2 líneas de encabezado php – ).</p>
<p>En mis primeros años de kumbiero comencé creando un controlador para las acciones clásicas de CRUD (Create, Read, Update y Delete), un modelo para apuntar la tabla de la base de datos y al menos 3 archivos de vista (index, agregar y editar).</p>
<p>Para hacer el CRUD de otra tabla copiaba el controlador inicial en el nuevo, luego editaba todo lo que correspondía, y lo mismo hacía para el modelo y las vistas.</p>
<p>Como verán es un trabajo arduo, pero no es tanto trabajo… a menos que tengas más de 10 tablas.</p>
<p>Si pueden hacer el ejercicio de mirar el bosque desde lejos, casi todos los CRUDs creados tienen las mismas acciones, y usan las mismas vistas (con sus leves diferencias).</p>
<h2>La iluminación</h2>
<p>Fue entonces que un día de IRC (el chat que usábamos antes), los colegas del core de KumbiaPHP me presentaron a ScaffoldController.</p>
<p>Es un amigo silencioso, puesto que está alojado en default/app/libs, pero además es un amigo confiable, pues hereda de AdminController (eso quiere decir que si damos cierta habilidad de autenticación al AdminController, los controllers que hagamos usando ScaffoldController también estarán asegurados).</p>
<h2>Configuración inicial</h2>
<p>Si este es un proyecto que ha iniciado desde cero, deberá configurar el acceso a la base de datos antes de continuar.</p>
<p>Para eso usaremos el archivo <em>default/app/config/database.ini</em>. En él se definen los entornos de datos que usará nuestra aplicación, los que normalmente son: development (desarrollo) y production (producción)</p>
<p><a href="https://www.kumbiaphp.com/blog/wp-content/uploads/2017/04/database-setting.png"><img decoding="async" class="alignnone wp-image-1890 size-full" src="https://www.kumbiaphp.com/blog/wp-content/uploads/2017/04/database-setting.png" alt="Archivo databases.ini de KumbiaPHP" width="585" height="339" srcset="https://kumbiaphp.com/blog/wp-content/uploads/2017/04/database-setting.png 585w, https://kumbiaphp.com/blog/wp-content/uploads/2017/04/database-setting-300x174.png 300w" sizes="(max-width: 585px) 100vw, 585px" /></a></p>
<p>Los parámetros de configuración que debemos revisar son:</p>
<ul>
<li><strong>host</strong>: Nombre de red o dirección ip del equipo en el cual está instalada la base de datos.</li>
<li><strong>username</strong>: usuario de la base de datos.</li>
<li><strong>password</strong>: contraseña del usuario de la base de datos.</li>
<li><strong>name</strong>: nombre de la base de datos.</li>
<li><strong>type</strong>: el tipo de base de datos que usará el proyecto, como mysql, pgsql, oracle.</li>
</ul>
<p>Para indicarle al proyecto que debe usar uno u otro entorno de base de datos, será necesario modificar el archivo de configuración <em>default/app/config/config.php</em>. De forma predeterminada la configuración del entorno de base de datos es &#8216;default&#8217;, pero lo dejaremos inicialmente como &#8216;development&#8217;.</p>
<p><a href="https://www.kumbiaphp.com/blog/wp-content/uploads/2017/04/datbase-default.png"><img loading="lazy" decoding="async" class="alignnone wp-image-1891 size-full" src="https://www.kumbiaphp.com/blog/wp-content/uploads/2017/04/datbase-default.png" alt="Archivo config.php de KumbiaPHP" width="473" height="419" srcset="https://kumbiaphp.com/blog/wp-content/uploads/2017/04/datbase-default.png 473w, https://kumbiaphp.com/blog/wp-content/uploads/2017/04/datbase-default-300x266.png 300w" sizes="auto, (max-width: 473px) 100vw, 473px" /></a></p>
<p>Lista la configuración, sigamos con la acción.</p>
<h2>De la teoría a la acción</h2>
<p>Bueno, mucho texto y poca acción (o como versa el dicho “mucho ruido y pocas nueces”).</p>
<p>En nuestro primer ejemplo usaremos la clásica tabla de categorías, con la siguiente estructura:</p>
<pre class="  language-sql"><code class="  language-sql">
&lt;span class=&quot;token keyword&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;TABLE&lt;/span&gt; categorias &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
 id &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;NOT&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;NULL&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;AUTO_INCREMENT&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
 nombre &lt;span class=&quot;token keyword&quot;&gt;varchar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;NOT&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;NULL&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;UNIQUE&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
 categorias_id &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
 creada_at &lt;span class=&quot;token keyword&quot;&gt;timestamp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
 actualizada_in &lt;span class=&quot;token keyword&quot;&gt;timestamp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
 &lt;span class=&quot;token keyword&quot;&gt;PRIMARY&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;KEY&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;`&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;</code></pre>
<p>Ahora crearemos un modelo llamado Categorias.</p>
<p>Archivo: <em>models/categorias.php</em></p>
<pre class="  language-php"><code class="  language-php">
&lt;span class=&quot;token delimiter&quot;&gt;&lt;?php&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Categorias&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ActiveRecord&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;</code></pre>
<p>Y finalmente <strong>(sí, finalmente)</strong> añadiremos el controlador CategoriasController.</p>
<p>Archivo: <em>controllers/categoria_controller.php</em></p>
<pre class="  language-php"><code class="  language-php">
&lt;span class=&quot;token delimiter&quot;&gt;&lt;?php&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;CategoriasController&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ScaffoldController&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
 &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$model&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#039;Categorias&#039;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;</code></pre>
<p><span id="more-1288"></span></p>
<h2>¡Y hemos terminado!</h2>
<p>Así de sencillo ya tenemos nuestro primer CRUD sin dolor.</p>
<p><a href="https://www.kumbiaphp.com/blog/wp-content/uploads/2017/03/VirtualBox_ubuntu_31_03_2017_11_05_35.png"><img loading="lazy" decoding="async" class="alignnone wp-image-1322 size-full" src="https://www.kumbiaphp.com/blog/wp-content/uploads/2017/03/VirtualBox_ubuntu_31_03_2017_11_05_35.png" alt="" width="877" height="571" srcset="https://kumbiaphp.com/blog/wp-content/uploads/2017/03/VirtualBox_ubuntu_31_03_2017_11_05_35.png 877w, https://kumbiaphp.com/blog/wp-content/uploads/2017/03/VirtualBox_ubuntu_31_03_2017_11_05_35-300x195.png 300w, https://kumbiaphp.com/blog/wp-content/uploads/2017/03/VirtualBox_ubuntu_31_03_2017_11_05_35-768x500.png 768w" sizes="auto, (max-width: 877px) 100vw, 877px" /></a></p>
<p><a href="https://www.kumbiaphp.com/blog/wp-content/uploads/2017/03/VirtualBox_ubuntu_31_03_2017_11_12_14.png"><img loading="lazy" decoding="async" class="alignnone wp-image-1321 size-full" src="https://www.kumbiaphp.com/blog/wp-content/uploads/2017/03/VirtualBox_ubuntu_31_03_2017_11_12_14.png" alt="" width="880" height="583" srcset="https://kumbiaphp.com/blog/wp-content/uploads/2017/03/VirtualBox_ubuntu_31_03_2017_11_12_14.png 880w, https://kumbiaphp.com/blog/wp-content/uploads/2017/03/VirtualBox_ubuntu_31_03_2017_11_12_14-300x199.png 300w, https://kumbiaphp.com/blog/wp-content/uploads/2017/03/VirtualBox_ubuntu_31_03_2017_11_12_14-768x509.png 768w" sizes="auto, (max-width: 880px) 100vw, 880px" /></a></p>
<p>Tendremos inicialmente las acciones para index, agregar, editar, ver y eliminar, y sólo hemos escrito 7 líneas.</p>
<h2>Personalizando las vistas</h2>
<p>Y ahora, ¿quién podrá defendernos de la hoja de estilo predeterminada? ¡Excelente pregunta!</p>
<p>Bueno, los muchachos del core ya tuvieron eso previsto para nosotros. Resulta que puedes crear tus propias vistas para usarlas con tus controladores de Scaffold. Basta copiar el contenido de <em>app/views/_shared/scaffold/kumbia</em> en una nueva versión de vistas para tus controladores.</p>
<p><a href="https://www.kumbiaphp.com/blog/wp-content/uploads/2017/03/skeleton.png"><img loading="lazy" decoding="async" class="alignnone wp-image-1306 size-full" src="https://www.kumbiaphp.com/blog/wp-content/uploads/2017/03/skeleton.png" alt="" width="668" height="235" srcset="https://kumbiaphp.com/blog/wp-content/uploads/2017/03/skeleton.png 668w, https://kumbiaphp.com/blog/wp-content/uploads/2017/03/skeleton-300x106.png 300w" sizes="auto, (max-width: 668px) 100vw, 668px" /></a></p>
<p>Supongamos que nos piden usar <a href="http://getskeleton.com/" target="_blank" rel="noopener noreferrer">skeleton</a>. Por lo tanto ahora tendremos una carpeta llamada <em>app/views/_shared/scaffolds/skeleton</em>, con los mismos tres archivos de vistas: crear, index, ver.</p>
<p>Y ¿cómo le decimos a nuestros controladores que usen nuestro nuevo conjunto de vistas?<br />
<strong>Sencillo:</strong></p>
<pre class="  language-php"><code class="  language-php">
&lt;span class=&quot;token delimiter&quot;&gt;&lt;?php&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;CategoriasController&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ScaffoldController&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
 &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$model&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#039;Categorias&#039;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$scaffold&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#039;skeleton&#039;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;</code></pre>
<h2>El resultado final</h2>
<p>Si miramos el resultado tendremos algo como lo que se ve en las siguientes imágenes:</p>
<figure id="attachment_1307" aria-describedby="caption-attachment-1307" style="width: 914px" class="wp-caption alignnone"><a href="https://www.kumbiaphp.com/blog/wp-content/uploads/2017/03/index-sk.png"><img loading="lazy" decoding="async" class="wp-image-1307 size-full" src="https://www.kumbiaphp.com/blog/wp-content/uploads/2017/03/index-sk-e1490969789984.png" alt="Vista usando skeleton" width="914" height="392" srcset="https://kumbiaphp.com/blog/wp-content/uploads/2017/03/index-sk-e1490969789984.png 914w, https://kumbiaphp.com/blog/wp-content/uploads/2017/03/index-sk-e1490969789984-300x129.png 300w, https://kumbiaphp.com/blog/wp-content/uploads/2017/03/index-sk-e1490969789984-768x329.png 768w" sizes="auto, (max-width: 914px) 100vw, 914px" /></a><figcaption id="caption-attachment-1307" class="wp-caption-text">Vista usando skeleton</figcaption></figure>
<figure id="attachment_1308" aria-describedby="caption-attachment-1308" style="width: 910px" class="wp-caption alignnone"><a href="https://www.kumbiaphp.com/blog/wp-content/uploads/2017/03/editar-1.png"><img loading="lazy" decoding="async" class="wp-image-1308 size-full" src="https://www.kumbiaphp.com/blog/wp-content/uploads/2017/03/editar-1-e1490970004190.png" alt="Formulario usando skeleton" width="910" height="336" srcset="https://kumbiaphp.com/blog/wp-content/uploads/2017/03/editar-1-e1490970004190.png 910w, https://kumbiaphp.com/blog/wp-content/uploads/2017/03/editar-1-e1490970004190-300x111.png 300w, https://kumbiaphp.com/blog/wp-content/uploads/2017/03/editar-1-e1490970004190-768x284.png 768w" sizes="auto, (max-width: 910px) 100vw, 910px" /></a><figcaption id="caption-attachment-1308" class="wp-caption-text">Formulario usando skeleton</figcaption></figure>
<p>Así de fácil logramos crear nuestro primer CRUD con 8 líneas de código y con nuestro css preferido (o requerido).</p>
<p>Si quieres ver lo que sigue, mira en los enlaces que están a continuación:</p>
<p><strong>Parte 2:</strong> <a href="https://www.kumbiaphp.com/blog/2017/04/12/scaffolding-con-kumbiaphp-modificando-comportamientos-y-contenidos-segun-nuestra-necesidad/">ScaffoldController: Modificando comportamientos y contenidos</a></p>
<p><strong>Parte 3:</strong>  <a href="https://www.kumbiaphp.com/blog/2017/05/16/scaffoldcontroller-modificando-vistas/">ScaffoldController: Modificando vistas</a></p>
<h2>Descarga el ejemplo completo</h2>
<p>Pueden descargar el código del proyecto desde el siguiente repositorio de <a href="https://github.com/nelsonrojas/Scaffold-KumbiaPHP" target="_blank" rel="noopener noreferrer">Github</a></p>
<p>Si buscan el script de la tabla de categorías pueden encontrarlo dentro de <em><a href="https://github.com/nelsonrojas/Scaffold-KumbiaPHP/tree/master/default/app/config/sql" target="_blank" rel="noopener noreferrer">app/config/sql</a></em></p>
<p><strong>¡Larga vida a KumbiaPHP!</strong></p>
<p>La entrada <a href="https://kumbiaphp.com/blog/2017/04/03/scaffolding-para-crud-abm-sencillos-y-no-tanto-primera-parte/">Scaffolding para CRUD (ABM) sencillos (y no tanto) &#8211; primera parte</a> se publicó primero en <a href="https://kumbiaphp.com/blog">KumbiaPHP Framework PHP en español</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://kumbiaphp.com/blog/2017/04/03/scaffolding-para-crud-abm-sencillos-y-no-tanto-primera-parte/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1288</post-id>	</item>
	</channel>
</rss>
