https://wiki.kumbiaphp.com/api.php?action=feedcontributions&user=Avilac3&feedformat=atom
KumbiaPHP Framework Wiki - Contribuciones del usuario [es]
2024-03-28T20:19:16Z
Contribuciones del usuario
MediaWiki 1.34.1
https://wiki.kumbiaphp.com/index.php?title=Ejemplo_de_OAuth_en_KumbiaPHP&diff=3734
Ejemplo de OAuth en KumbiaPHP
2013-04-14T22:36:47Z
<p>Avilac3: /* Pasos */</p>
<hr />
<div>{{cleanupbox<br />
|image=[[Archivo:Import.png|40px]]<br />
|texto ='''Este Artículo esta siendo revisado por los Kumbieros.'''<br /><br />
<span style="font-size:90%">Puedes tomar la información que aqui se encuentra pero no nos hacemos responsable</span><br />
}}<br />
<br />
==Introducción== <br />
'''Nota previa''' Este ejemplo fue tomado de la documentación oficial de [http://twitter.com Twitter] / [http://github.com/abraham/twitteroauth/ TwitterOAuth] y adaptado a la arquitectura MVC de KumbiaPHP de forma básica. <br />
<br />
Se ha vuelto común ver sitios webs que ofrecen sus servicios para usuarios utilizando métodos de autenticación bastante convencionales como [http://es.wikipedia.org/wiki/OAuth OAuth], OpenID, etc. para este ejemplo el enfoque estará sobre OAuth.<br />
<br />
<br />
== Requisitos ==<br />
Como este ejemplo se basa en twitter es primordial tener una cuenta creada en este sistema de bloging, si aún no tienes ya es hora que te [http://twitter.com registrates] en Twitter. y seas un seguidor(followers) de [http://twitter.com/KumbiaPHP @KumbiaPHP]<br />
<br />
Descargar la librería [http://github.com/abraham/twitteroauth/ TwitterOAuth], descomprimela y copia los ficheros '''OAuth.php''' y '''TwitterOAuth.php''' en ''/app/libs/'' de tu arbol de directorios de KumbiaPHP. '''Importante: La librería TwitterOAuth necesita que el PHP del servidor tenga soporte para las funciones de cURL.'''<br />
<br />
<br />
[http://twitter.com/apps Registra también tu aplicación], indicando que es de tipo de aplicación Navegador (Browser), indica el tipo de permiso que necesitas (ReadOnly o ReadWrite), y marca el checkbox final, para indicar que usaremos Twitter para hacer inicios de sesión.<br />
<br />
== Pasos previos ==<br />
Debido a un problema de desbordamiento de entero en la funcion ''json_decode()'', hay que parchear la librería TwitterOAuth para que los id de los mensajes se traten correctamente.<br />
<br />
Editar el fichero TwitterOAuth.php y sustituir <br />
<source lang=php ><br />
return json_decode($response);<br />
</source><br />
por<br />
<source lang=php ><br />
return json_decode(preg_replace('/"id":(\d+)/', '"id":"$1"', $response));<br />
</source><br />
en las funciones ''get()'', ''post()'' y ''delete()''.<br />
[http://github.com/abraham/twitteroauth/issues#issue/11 Este fallo] ya era conocido por Abraham, el desarrollador de TwitterOAuth y le pasé el "parche" para que lo tuviera en cuenta. Aquellos que tengais PHP 5.3 podeis usar el parametro JSON_BIGINT_AS_STRING en la funcion ''json_decode()'', quedando así:<br />
<source lang=php><br />
return json_decode($response, false, 512, JSON_BIGINT_AS_STRING));<br />
</source><br />
<br />
<br />
== Pasos ==<br />
creamos un controlador, usando el codigo de la documentación de TwitterOAuth como base:<br />
''app/controllers/oauth_controller.php''<br />
<source lang=php ><br />
<?php<br />
Load::lib("TwitterOAuth");<br />
class OAuthController extends AppController <br />
{<br />
protected $consumerKey;<br />
protected $consumerSecret;<br />
protected $callBack;<br />
<br />
public function before_filter() {<br />
/* Esto es mio, ya que tengo los valores en la base de datos, lo dejo para servir de ejemplo<br />
$rows = $this->Configuration->find("name LIKE '%oauth%' ORDER BY name ASC");<br />
$this->callBack = $rows[0]->value;<br />
$this->consumerKey = $rows[1]->value;<br />
$this->consumerSecret = $rows[2]->value;<br />
*/<br />
$this->callBack = "http://<tudominio>/oauth/_callback";<br />
$this->consumerKey = "<aqui tu Consumer Key>";<br />
$this->consumerSecret = "<aqui tu Consumer Secret>";<br />
}<br />
<br />
public function index() <br />
{<br />
session_start();<br />
if (empty($_SESSION['access_token']) || empty($_SESSION['access_token']['oauth_token']) || empty($_SESSION['access_token']['oauth_token_secret'])) <br />
{<br />
View::select(NULL, NULL);<br />
return Router::redirect("oauth/_register");<br />
}<br />
<br />
/* Get user access tokens out of the session. */<br />
$access_token = $_SESSION['access_token'];<br />
<br />
/* If access tokens are not available redirect to connect page. */<br />
if (empty($access_token['oauth_token']) || empty($access_token['oauth_token_secret'])) {<br />
header('Location: http://<tudominio>/oauth/_register/');<br />
}<br />
<br />
/* Create a TwitterOauth object with consumer/user tokens. */<br />
$connection = new TwitterOAuth($this->consumerKey, $this->consumerSecret, $access_token['oauth_token'], $access_token['oauth_token_secret']);<br />
<br />
/* Get credentials to test API access */<br />
$credentials = $connection->get('account/verify_credentials');<br />
<br />
if ($credentials->error) {<br />
$this->msg = $credentials->error."<br><br><a href='http://<tudominio>/oauth/_register'>Register now</a>";<br />
}<br />
else {<br />
$this->msg = "Acceso confirmado, OAuth correcto. Bienvenido ".$credentials->screen_name.".<br><br><a href='http://<tudominio>/oauth/_logout'>Logout</a>";<br />
}<br />
}<br />
<br />
public function _redirect() <br />
{<br />
session_start();<br />
<br />
/* Create TwitterOAuth object and get request token */<br />
$connection = new TwitterOAuth($this->consumerKey, $this->consumerSecret);<br />
<br />
/* Get request token */<br />
$request_token = $connection->getRequestToken($this->callBack);<br />
<br />
/* Save request token to session */<br />
$_SESSION['oauth_token'] = $token = $request_token['oauth_token'];<br />
$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];<br />
<br />
/* If last connection fails don't display authorization link */<br />
switch ($connection->http_code) {<br />
case 200:<br />
/* Build authorize URL */<br />
$url = $connection->getAuthorizeURL($token);<br />
header('Location: ' . $url);<br />
break;<br />
default:<br />
echo 'Could not connect to Twitter. Refresh the page or try again later.';<br />
}<br />
die();<br />
}<br />
<br />
public function _register() {<br />
session_start();<br />
session_destroy();<br />
}<br />
<br />
public function _logout() {<br />
session_start();<br />
session_destroy();<br />
View::select(NULL, NULL);<br />
return Router::redirect("oauth/index");<br />
}<br />
<br />
public function _callback() <br />
{<br />
session_start();<br />
<br />
/* If the oauth_token is old redirect to the connect page. */<br />
if (isset($_REQUEST['oauth_token']) && $_SESSION['oauth_token'] !== $_REQUEST['oauth_token']) {<br />
$_SESSION['oauth_status'] = 'oldtoken';<br />
header('Location: http://<tudominio>/oauth/_register/');<br />
}<br />
<br />
/* Create TwitteroAuth object with app key/secret and token key/secret from default phase */<br />
$connection = new TwitterOAuth($this->consumerKey, $this->consumerSecret, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);<br />
<br />
/* Request access tokens from twitter */<br />
$access_token = $connection->getAccessToken($_REQUEST['oauth_verifier']);<br />
<br />
/* Save the access tokens. Normally these would be saved in a database for future use. */<br />
$_SESSION['access_token'] = $access_token;<br />
<br />
/* Remove no longer needed request tokens */<br />
unset($_SESSION['oauth_token']);<br />
unset($_SESSION['oauth_token_secret']);<br />
<br />
/* If HTTP response is 200 continue otherwise send to connect page to retry */<br />
if (200 == $connection->http_code) {<br />
/* The user has been verified and the access tokens can be saved for future use */<br />
$_SESSION['status'] = 'verified';<br />
header('Location: http://<tudominio>/oauth/index/');<br />
} else {<br />
/* Save HTTP status for error dialog on connnect page.*/<br />
header('Location: http://<tudominio>/oauth/_register/');<br />
}<br />
die();<br />
}<br />
<br />
}<br />
?><br />
</source><br />
<br />
<br />
Por último, creamos las vistas:<br />
''views/oauth/index.phtml'':<br />
<source lang=php ><br />
<?php echo $msg; ?><br />
</source><br />
<br />
''views/oauth/_register.phtml'':<br />
<source lang=php ><br />
<a href="http://<tudominio>/oauth/_redirect/"><img src="/img/lighter.png" alt="Sign in with Twitter"/></a><br />
</source><br />
<br />
== Pruebas ==<br />
Ya esta! Ahora ya puedes visitar la URL de tu controlador en http://''<tudominio>''/oauth y probarlo. La primera vez se te pedirá autorizar a la aplicación, pero una vez hecho, ya no hará falta.<br />
<br />
Puedes hacer distintas pruebas:<br />
# Cerrar la sesion de Twitter, cerrar el navegador, abrirlo y acceder a tu controlador. Veras que se te muestra el botón de iniciar sesión. Como la aplicación ya está autorizada, sólamente debes iniciar sesión en Twitter y se redirige de nuevo a tu controlador.<br />
# Cerrar el navegador, iniciar Twitter y luego acceder a tu controlador. Se te muestra de nuevo el botón de iniciar sesión. Como la aplicación está autorizada y ya has iniciado sesión en Twitter, el inicio de sesión es automático sólo con pulsar el botón.<br />
<br />
<br />
== Links ==<br />
* [http://apiwiki.twitter.com/Twitter-API-Documentation API de Twitter]<br />
* [http://github.com/abraham/twitteroauth/ TwitterOAuth]<br />
<br />
<br />
Para cualquier duda, podeis enviarme un email o buscarme por el IRC.<br />
<br />
Saludos,<br />
<br />
Soukron<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>
Avilac3
https://wiki.kumbiaphp.com/index.php?title=Webs_Con_KumbiaPHP_Framework&diff=3496
Webs Con KumbiaPHP Framework
2012-04-13T16:58:30Z
<p>Avilac3: </p>
<hr />
<div>Enlaces de Páginas y/o Aplicaciones desarrolladas en KumbiaPHP Framework.<br />
#[http://www.acpois.com/ ACPOIS: Puntos autocaravanistas en un mapa (POI's)]<br />
#[http://www.alcopa.es/ ALCOPA S.L]<br />
#[http://www.amecasoft.com.mx/web/ Amecasoft]<br />
#[http://americansparks.net/ American Sparks LLC.]<br />
#[http://www.alfher.com/home/home_esp ..::Alfher::..]<br />
#[http://www.amkpeople.com/web/ amkpeople]<br />
#[http://www.aparthotelmaracaibo.com/ Maracaibo Hotel Apartamentos en Mallorca]<br />
#[http://www.avisoya.com/ <<< web de clasificados Avisoya para colombia >>> ]<br />
#[http://azimutvoyages.com/ Azimut Voyages]<br />
#[http://barabino.com.ar/ Barabino inmobiliaria]<br />
#[http://bistro1902.com/ Bistro1902]<br />
#[http://blog.simacel.com/ Blog de simacel.com ]<br />
#[http://www.bonpasrural.com/ Turisme rural]<br />
#[http://www.bubeldesigns.com/ Bubel - High Performance Designs - Bubel kills the towel] Tienda online<br />
#[http://www.catgenie.es/ CatGenie]<br />
#[http://camilotilaguy.com/ Camilo Tilaguy] Desarollador en KumbiaPHP, mira su portfolio para ver más webs con Kumbiaphp<br />
#[http://www.chattagena.com/ Chattagena.com - Apoyando el talento cartagenero]<br />
#[http://www.colchonviscoelastica.es/ Colchon viscoelastica] Tienda online<br />
#[http://www.colchonia.com/ Colchonia] Tienda online<br />
#[http://www.consulintel.es/ Consulintel]<br />
#[http://contrax.dailyscript.co/ Contrax © Dailyscript] usuario: dailyscript clave: dailyscript<br />
#[http://www.copasapobla.com/ Torneo Escuela de Fútbol base Copa Sa Pobla]<br />
#[http://www.dinecto.com/ Dinecto web hosting]<br />
#[http://drisraelortega.com/ Dr. Israel Ortega, cirujano plástico]<br />
#[http://www.elgatodelatazadete.com/contenido Deborah Goya Blog]<br />
#[http://elregional.net.ve/ Diario digital El Regional ]<br />
#[http://elaragueno.gesindoni.com.ve/ Diario digital El Aragueño ]<br />
#[http://www.eventosgenerales.com/ Eventos Generales ]<br />
#[http://www.eivissa.com.ve/ Tiendas Eivissa Venezuela ]<br />
#[http://www.elspastorets.cat/ Els Pastorets]<br />
#[http://www.empleate.com/ Empleate.com ]<br />
#[http://www.hostteen.com/ Hostteen project]<br />
#[http://intereza.com/ intereza.com]<br />
#[http://www.jlralturas.com/ Jlr Alturas] <br />
#[http://www.joventutdelafarandula.cat/ Joventut de la Faràndula]<br />
#[http://kupaste.com/ Kupaste] Un pastebin con KumbiaPHP<br />
#[http://www.labodegadeutiel-requena.com/ La bodega de Utiel - requena] Tienda online<br />
#[http://www.lertoraconsultores.com/ Lertora Consultores ]<br />
#[http://www.matrasdeluxe.ru Matras deluxe] Si también en ruso :), Tienda online<br />
#[http://milotero.com/ Milotero.com] Servicio para compra e lotería online<br />
#[http://www.ministerioapostolicosalem.com/ Ministerio Apostolico Salem]<br />
#[http://motors-us.com/ Motors-us.com] Sistema para promoción y venta de vehículos<br />
#[http://www.musicalbareda.com/ Instrumentos Musicales Albareda]<br />
#[http://mrdescuento.com/ Descuentos]<br />
#[http://www.nathanbabyinspiration.com Nathan Baby Inspiration]<br />
#[http://www.nextcontact.cc/ Next Contact]<br />
#[http://www.nutrar.com Nutrar Prevención y Salud Plena]<br />
#[http://orinocowest.net/OrinocoWest OrinocoWest]<br />
#[http://www.orospeda.es/majwq Webquest Creator]<br />
#[http://planificacion.unefm.edu.ve/ Dirección de Planificación, Desarrollo y Evaluación Universitaria Universidad Nacional Experimental "Francisco de Miranda"]<br />
#[http://www.peruviansoft.com/ PeruvianSoft ]<br />
#[http://premioscmv.com/ Premios de la moda y el talento vallecaucano - premioscmv.com]<br />
#[http://www.proceso.com.mx/ Proceso - 2010]<br />
#[http://www.quinielitas.com/ www.quinielitas.com !Vive el futbol, Sueña futbol y Gana con el futbol¡]<br />
#[http://rasprodazhamebeli.ru/ Rasprodazhamebeli] Si en ruso, Tienda online<br />
#[http://recordatoriotributario.com/ Recordatorio tributario]<br />
#[http://www.redpassport.com.mx redPassport :::::Home:::::]<br />
#[http://www.regalosybebes.com/ Regalos y bebes] Tienda online<br />
#[http://www.scaxsolution.tk SCAX Solution]<br />
#[http://www.seguicapacitandote.com/ Sigue Capacitandote]<br />
#[http://www.siguemilink.com/ SigueMiLink » Acorta tus enlaces!]<br />
#[http://www.sk84lifefamily.com/ sk84lifefamily]<br />
#[http://www.smartext.com.ve/ SmartText]<br />
#[http://softcash.dailyscript.co/ Softcash © Dailyscript] usuario: softcash clave: dailyscript<br />
#[http://supermundial.com.ve/ Supermundial ]<br />
#[http://www.surskate.com.ar/ Surskate ]<br />
#[http://www.tulopiensas.com/ Tulopiensas - Estados para tu facebook y twitter]<br />
#[http://www.tiendamaps.com/kumbia/ Tiendamaps - Un servicio para las MiPyMES Colombianas]<br />
#[http://www.tractopartesvilchis.com/ Tractopartes Vilchis]<br />
#[http://tunaranjaencasa.com/ Tu naranja en casa] Tienda online<br />
#[http://www.upeu.edu.pe/ Universidad Peruana Unión ]<br />
#[http://www.waterloo2012.be/ Waterloo 2012]</div>
Avilac3
https://wiki.kumbiaphp.com/index.php?title=Beta2_scaffold&diff=3420
Beta2 scaffold
2011-12-09T22:59:27Z
<p>Avilac3: /* Ejemplo de Funcionamiendo */</p>
<hr />
<div>== Scaffold para KumbiaPHP beta 2 ==<br />
<br />
Scaffold para Kumbiaphp beta 2<br />
<br />
<br />
{{cleanupbox<br />
|image=[[Archivo:Information_icon4.png|45px]]<br />
|texto ='''Este Artículo cumple con todos los requererimientos de los Kumbieros.'''<br /><br />
}}<br />
{{cleanupbox<br />
|texto ='''Este ejemplo es funcional para la [[KumbiaPHP_Framework_Versión_1.0_Beta2| Versión Beta2 en desarrollo]]''' es un boceto de Scaffold <br /><br />
}}<br />
<br />
== Introducción ==<br />
Para empezar es importante saber que el Scaffold se utilizó hasta la versión estable de Kumbiaphp 0.5 y que al salir la versión de Kumbiaphp 1.0 Spirit beta 1 se dejó a un lado. <br />
<br />
Viendo la necesidad y las facilidades que el Scaffold proporciona al apoyo de aplicaciones, el equipo de desarrollo de Kumbiaphp vuelve a incorporar un nuevo Scaffold para su versión en prueba KumbiaPHP beta 2, mejorando y robusteciendo el desempeño del Scaffold para el Framework y que sin duda aporta a un gran avance en cualquier desarrollo de aplicación para usuarios iniciados en el uso de Kumbiaphp y usuarios avanzados, entregando para todos una gama alta de posibilidades.<br />
<br />
== Concepto ==<br />
Scaffold es un método de meta-programación para construir aplicaciones de software que soportan bases de datos. Esta es una nueva técnica soportada por algunos frameworks del tipo MVC (Modelo-Vista-Controlador), donde el programador debe escribir una especificación que escriba como debe ser usada la aplicación de bases de datos. El compilador luego usara esta para generar un código que pueda usar la aplicación para leer, crear, actualizar y borrar entradas de la base de datos (algo conocido como CRUD o ABM), tratando de poner plantillas como un andamio Scaffold) en la cual construir una aplicación mas potente.<br />
Scaffolding es la evolución de códigos genereadores de bases de datos desde ambientes mas desarrollados, como ser CASE Generator de Oracle y otros tantos servidores 4GL para servicios al Cliente.<br />
Scaffolding se hizo popular gracias al framework "Ruby on Rails", que ha sido adptado a otros frameworks, incluyendo Django, Monorail, KumbiaPHP framework entre otros.<br />
<br />
Tomado de: [[Scaffolding|Scaffolding Kumbiaphp]]<br />
<br />
== Objetivo ==<br />
Crear un CRUD 100% Funcional con tan solo 2 líneas de código en mi controller. <br />
<br />
Kumbiaphp beta2, Tomará como por arte de magia los parámetros indicados en mi TABLA y armará todo el CRUD.<br />
<br />
<br />
== Primeros Pasos ==<br />
Para realizar nuestro primer Scaffold, vamos a utilizar el mismo modelo que trabajamos en el [[Beta2_CRUD_en_KumbiaPHP_Framework|CRUD para KumbiaPHP Beta2]], y que tiene por nombre '''menus'''.<br />
<br />
== Modelo ==<br />
<br />
'''Crear el modelo''', como de costumbre apuntando siempre a la clase '''ActiveRecord'''.<br />
<br />
'''''[app]/models/menus.php:'''''<br />
<source lang="php"><br />
<?php<br />
class Menus extends ActiveRecord{<br />
<br />
}<br />
</source><br />
<br />
<br />
<br />
== Controlador ==<br />
'''Crear el Controlador''' en este ejemplo, NO apuntaremos a la clase '''AppController''' y SI a la clase '''ScaffoldController'''<br />
<br />
'''''[app]/controllers/menus_controller.php:'''''<br />
<source lang="php" line><br />
<?php<br />
class MenusController extends ScaffoldController{<br />
public $model = 'menus';<br />
}<br />
</source><br />
<br />
Aquí terminan nuestros primeros pasos. <br />
No es necesario MAS NADA, Tendremos por arte de magia un CRUD 100% Funcional.<br />
<br />
== Ventajas ==<br />
1. Podremos ir cargando nuestros primeros registros en la BD<br />
<br />
2. Pruebas al insertar registros<br />
<br />
3. Avance progresivo, ya que podremos ir sustituyendo las vistas del Scaffold por mis propias vistas.<br />
<br />
== Desventaja ==<br />
1. El Scaffold no es para hacer sistemas, si no para ayudar al principio de una aplicación.<br />
<br />
== Views para el scaffold==<br />
Por defecto usa los de views/_shared/scaffolds/kumbia/...<br />
Uno puede crear los suyos dentro de scaffolds<br />
views/_shared/scaffolds/foo/...<br />
y en el controller ademas del atributo $model añade;<br />
public $scaffold = 'foo';<br />
<br />
Asi usara los views de scaffolds/foo/...<br />
<br />
Mas importante es todavia, que uno puede crear sus views como siempre.<br />
es decir, si creas el controller MiController<br />
y creas el view en views/mi/editar.phtml (por ejemplo)<br />
usara primero el view, si no existe usara el de scaffolds.<br />
Asi uno cambia los views a su gusto donde quiera y progresivamente.<br />
<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]<br />
[[Categoría:Tutoriales KumbiaPHP Beta2]]<br />
<br />
<br />
== Ejemplo de Funcionamiendo ==<br />
<br />
Asi queda en este ejemplo vamos a mostrar el scaffold de categorias<br />
<br />
<br />
Este es nuestro modelo se llama categorias.php<br />
<br />
[[Archivo:Scanffold_03_modelo.png]] <br />
<br />
Este es nuestro controlador se llama categoria_controller.php<br />
<br />
[[Archivo:Scanffold04_controlador.png]]<br />
<br />
no hay necesidad de hacer una vista pero si se quiere se puede hacer XD<br />
<br />
[[Archivo:Scanffold_01.png]]<br />
<br />
Editar categoria<br />
<br />
[[Archivo:Scanffold 02 editar.png]]</div>
Avilac3
https://wiki.kumbiaphp.com/index.php?title=Archivo:Scanffold_02_editar.png&diff=3419
Archivo:Scanffold 02 editar.png
2011-12-09T22:58:04Z
<p>Avilac3: </p>
<hr />
<div></div>
Avilac3
https://wiki.kumbiaphp.com/index.php?title=Archivo:Scanffold04_controlador.png&diff=3418
Archivo:Scanffold04 controlador.png
2011-12-09T22:56:14Z
<p>Avilac3: </p>
<hr />
<div></div>
Avilac3
https://wiki.kumbiaphp.com/index.php?title=Archivo:Scanffold_03_modelo.png&diff=3417
Archivo:Scanffold 03 modelo.png
2011-12-09T22:54:24Z
<p>Avilac3: </p>
<hr />
<div></div>
Avilac3
https://wiki.kumbiaphp.com/index.php?title=Beta2_scaffold&diff=3416
Beta2 scaffold
2011-12-09T22:51:36Z
<p>Avilac3: /* Views para el scaffold */</p>
<hr />
<div>== Scaffold para KumbiaPHP beta 2 ==<br />
<br />
Scaffold para Kumbiaphp beta 2<br />
<br />
<br />
{{cleanupbox<br />
|image=[[Archivo:Information_icon4.png|45px]]<br />
|texto ='''Este Artículo cumple con todos los requererimientos de los Kumbieros.'''<br /><br />
}}<br />
{{cleanupbox<br />
|texto ='''Este ejemplo es funcional para la [[KumbiaPHP_Framework_Versión_1.0_Beta2| Versión Beta2 en desarrollo]]''' es un boceto de Scaffold <br /><br />
}}<br />
<br />
== Introducción ==<br />
Para empezar es importante saber que el Scaffold se utilizó hasta la versión estable de Kumbiaphp 0.5 y que al salir la versión de Kumbiaphp 1.0 Spirit beta 1 se dejó a un lado. <br />
<br />
Viendo la necesidad y las facilidades que el Scaffold proporciona al apoyo de aplicaciones, el equipo de desarrollo de Kumbiaphp vuelve a incorporar un nuevo Scaffold para su versión en prueba KumbiaPHP beta 2, mejorando y robusteciendo el desempeño del Scaffold para el Framework y que sin duda aporta a un gran avance en cualquier desarrollo de aplicación para usuarios iniciados en el uso de Kumbiaphp y usuarios avanzados, entregando para todos una gama alta de posibilidades.<br />
<br />
== Concepto ==<br />
Scaffold es un método de meta-programación para construir aplicaciones de software que soportan bases de datos. Esta es una nueva técnica soportada por algunos frameworks del tipo MVC (Modelo-Vista-Controlador), donde el programador debe escribir una especificación que escriba como debe ser usada la aplicación de bases de datos. El compilador luego usara esta para generar un código que pueda usar la aplicación para leer, crear, actualizar y borrar entradas de la base de datos (algo conocido como CRUD o ABM), tratando de poner plantillas como un andamio Scaffold) en la cual construir una aplicación mas potente.<br />
Scaffolding es la evolución de códigos genereadores de bases de datos desde ambientes mas desarrollados, como ser CASE Generator de Oracle y otros tantos servidores 4GL para servicios al Cliente.<br />
Scaffolding se hizo popular gracias al framework "Ruby on Rails", que ha sido adptado a otros frameworks, incluyendo Django, Monorail, KumbiaPHP framework entre otros.<br />
<br />
Tomado de: [[Scaffolding|Scaffolding Kumbiaphp]]<br />
<br />
== Objetivo ==<br />
Crear un CRUD 100% Funcional con tan solo 2 líneas de código en mi controller. <br />
<br />
Kumbiaphp beta2, Tomará como por arte de magia los parámetros indicados en mi TABLA y armará todo el CRUD.<br />
<br />
<br />
== Primeros Pasos ==<br />
Para realizar nuestro primer Scaffold, vamos a utilizar el mismo modelo que trabajamos en el [[Beta2_CRUD_en_KumbiaPHP_Framework|CRUD para KumbiaPHP Beta2]], y que tiene por nombre '''menus'''.<br />
<br />
== Modelo ==<br />
<br />
'''Crear el modelo''', como de costumbre apuntando siempre a la clase '''ActiveRecord'''.<br />
<br />
'''''[app]/models/menus.php:'''''<br />
<source lang="php"><br />
<?php<br />
class Menus extends ActiveRecord{<br />
<br />
}<br />
</source><br />
<br />
<br />
<br />
== Controlador ==<br />
'''Crear el Controlador''' en este ejemplo, NO apuntaremos a la clase '''AppController''' y SI a la clase '''ScaffoldController'''<br />
<br />
'''''[app]/controllers/menus_controller.php:'''''<br />
<source lang="php" line><br />
<?php<br />
class MenusController extends ScaffoldController{<br />
public $model = 'menus';<br />
}<br />
</source><br />
<br />
Aquí terminan nuestros primeros pasos. <br />
No es necesario MAS NADA, Tendremos por arte de magia un CRUD 100% Funcional.<br />
<br />
== Ventajas ==<br />
1. Podremos ir cargando nuestros primeros registros en la BD<br />
<br />
2. Pruebas al insertar registros<br />
<br />
3. Avance progresivo, ya que podremos ir sustituyendo las vistas del Scaffold por mis propias vistas.<br />
<br />
== Desventaja ==<br />
1. El Scaffold no es para hacer sistemas, si no para ayudar al principio de una aplicación.<br />
<br />
== Views para el scaffold==<br />
Por defecto usa los de views/_shared/scaffolds/kumbia/...<br />
Uno puede crear los suyos dentro de scaffolds<br />
views/_shared/scaffolds/foo/...<br />
y en el controller ademas del atributo $model añade;<br />
public $scaffold = 'foo';<br />
<br />
Asi usara los views de scaffolds/foo/...<br />
<br />
Mas importante es todavia, que uno puede crear sus views como siempre.<br />
es decir, si creas el controller MiController<br />
y creas el view en views/mi/editar.phtml (por ejemplo)<br />
usara primero el view, si no existe usara el de scaffolds.<br />
Asi uno cambia los views a su gusto donde quiera y progresivamente.<br />
<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]<br />
[[Categoría:Tutoriales KumbiaPHP Beta2]]<br />
<br />
<br />
== Ejemplo de Funcionamiendo ==<br />
<br />
Asi queda <br />
<br />
[[Archivo:Scanffold_01.png]]</div>
Avilac3
https://wiki.kumbiaphp.com/index.php?title=Archivo:Scanffold_01.png&diff=3415
Archivo:Scanffold 01.png
2011-12-09T22:48:26Z
<p>Avilac3: scanffold generado</p>
<hr />
<div>scanffold generado</div>
Avilac3