Hablando de Código (Laravel)

0
Sin votos
Bien, como les dije anteriormente iba a crear un breve artículo sobre el excelente framework laravel el cual cada hora y día que lo uso me asombra más por sus cualidades y facilidades.
Solo por arriba daré algunos ejemplos de como funcionan los 4 principales elementos de este framework. (Rutas, Controladores, Modelos y Vistas).
Lo demás se los dejo para su estudio individual, con esto podrán empezar fácilmente con el framework y verán que en el camino es más sencillo que buscar en google. Solo un poquito de php e inglés y programas lo que desees.
  • Antes de RUTAS
Primeramente explicar algo que es escencial. Aunque el framework tiene la ventaja de debug igual debes conocer lo siguiente:
Recuerda en el fichero de configuracion app/config/app.php poner debug en true para que se te den estas facilidades.
Lo primero que debes saber es que la raiz principal es decir la direccion principal del framework se encierra en ...public/ es decir una vez montado en el apache este frame en la barra de direcciones iras hasta public/  .. Ahi empieza laravel.
Lo otro es que debes tener el modulo rewrite de apache activado y la extension openssl de php tambien activada. Recuerda usar php 5.4 en adelante para mejorar en todo. Si no se me queda nada, con esto ya podrás empezar.
  • RUTAS
Qué son las rutas? No es más que la dirección que se le dará al framework para que entienda una determinada llamada. Las rutas se usan para definir URL, para definir llamadas a funciones de controladores, incluso para hacer funciones internas en el proyecto sin tener que navegar.
Para definir una ruta solamente abra el fichero routes.php en la raiz del proyecto.
Ahí verás algún ejemplo ya echo.

La escencia es:
Route::metodo(<'Direccion'>, <'accion'>) ...-> Claro esta sin los <>
  • la direccion no es mas que el identificador tanto en la url como en el proyecto internamente para identificar la ruta.
  • la accion no es mas que definir que es lo que va a hacer esta ruta como tal.
  • el metodo es por donde se va a enviar o a escuchar la peticion (post, get, any, ...)
NOTA: Cuando abres public/ como tal, es lo mismo que la ruta '/'
Hay varias formas de definir como tal la accion pero bueno la escencia aca es enseñar lo basico.
Ejemplos de declaracion de rutas:

Route::get('/inicio','function(){
echo 'HOLA MUNDO';
}');
>> Esto es lo mismo que si pusieras Route::get('inicio'....); como ves no es necesario poner el "/" delante de cada ruta, solo si antes del "/" va algo, ahi si ejemplo 'inicio/hola'.
Route::get('inicio/hola', 'function(){
return View::Make('hola');
}');
Es necesario decir que las rutas get son generalmente usadas para cuando se entra la direccion por la URL o cuando usas links.

Route::get('ver_usuarios', 'micontrolador@lista_usuarios');
Cuando accedes a esta ruta se ejecuta la funcion lista_usuarios del controlador micontrolador.

Route::post('actualizar_usuario', 'micontrolador@actualizar');
Se usa cuando envias datos desde un formulario y se llama a la funcion actualizar del controlador micontrolador
(ojo) si ejecutas esta ruta por medio de la URL veras el error pues es post no get..

Route::post('actualizar_usuariio', ['as'=>'actua', 'uses'=>'micontrolador@actualizar']);
Lo mismo que el de arriba solo que se pasa con un alias es para facilitar la llamada desde el formulario que lo haria por el alias.

Route::any('actualizar_usuario','micontrolador@actualizar');
esto hace tanto post como get, siempre como estandar comienza por get por lo que si deseas coger datos por post entonces debes usar lo siguiente: EJEMPLO
...Desde el controlador...
public function actualizar(){
if(Request::method()=="POST"){
hago algo..}
else{hago algo}
}

Igual puedes hacer cualquier cosa que desees, llamar vistas, ejecutar funciones de los modelos lo que desees desde las rutas lo que a mi modo de ver no es aconsejable por problemas de organizacion y arquitectura pero bueno laravel permite esto.. ejemplo
Cargar una vista:
Route::get('ver_usuarios', 'function(){
return View::make('lista_usuarios');
}');
Cargar vista y enviar datos:
Route::any('actualizar_usuarios', 'function(){
if(Request::method()=="POST"){
$usuarios = Input::all();
hago algo con $usuarios...
}else{
return View::make('lista_usuarios')
}
}');
algo con la BD:
Route::get('todos_usuarios', 'function(){
$data = User::all();
return View::make('listado_usuarios', $data);
}');
PARAMETROS
Rutas con parametros

es sencillo
Route::get('ver_usuario/{id}', 'micontrolador@ver_usuario');
en este caso como ves se pasa como parametro id, entonces la funcion del controlador igual debe tener dicho parametro y ya trabajas sobre eso.
Asi continuamente si deseas mas parametros continuas. Recuerda que de esta forma puedes trabajar en la misma ruta si deseas o por cualquier metodo.
Route::get('ver_usuario/{id}' . '/{nombre}', 'micontrolador@ver_usuario');

Como pueden ver esto es algo de rutas, hay mucho mas pero bueno esta es la escencia, en la comunidad en la parte de documentacion hay ejemplo completos, pero una cosa, ahi solo se basan en todo en base a las rutas, por eso mi publicacion aca, para que entiendas como funciona completamente el frame que como puedes ver es muy completo y remodificable.

CONTROLADORES
Una definicion de controladores seria
class MicontroladorController extends BaseController{

}
y se encuentran siempre en el directorio Controller del frame.
funciones
una funcion aca es normal php puro
public function ver_usuario($id){

}
Cargar vistas desde controlador
public function listado_usuarios(){
return View::make('listado_usuarios');
}
Las vistas se cargan de esta manera sencilla return View::make('<Direccion de la vista>')
normalmente las vistas se crean en la carpeta View y pueden ser tanto .html, php como blade.php. Al llamarlas da igual, laravel sabe que es y procede.
Si pones una vista dentro de una carpeta por ejemplo la carpeta usuarios seria asi.
return View::make('usuarios.listado_usuarios');
Ves que facil?
Ahora para pasar variables a las vistas es igual que en los demas frameworks incluso tiene otras cosas pero bueno se los dejo para nivel medio o superior jeje....
public function listado_usuarios(){
$usuario['nombre'] = "MiMismo"
return View::make('listado_usuarios', $usuario);
}
Lo que se pasa es un array y en la vista como tal la variable a usar es el indice del array es decir que en la vista seria mas o menos asi
... lista_usuarios.php
<?php
echo $nombre;
?>
Existen formas de mandar mensajes de errores y notificacion etc pero bueno revise la otra bibliografia es muy sencillo.

Trabajar con bases de datos y vistas
public function listado_usuarios(){
$usuarios = User::all();
$data['usuarios']= $usuarios;
return View::make('listado_usuarios', $data);
}

public function listado_usuarios($id){
$usuarios = User::find($id)->get();
$data['usuarios']= $usuarios;
return View::make('listado_usuarios', $data);
}
en la vista
<?php
foreach($usuarios as $usuario){
echo $usuario->nombre;
}
?>
Muchas otras formas de usar modelos y vistas se encuentra en los ejemplares de la comunidad pero bueno aca les presento algunas de las mas usadas con respecto a la base de datos.

consultas y modelos:
User::find($id)->get(); busca los usuarios con el id = $id; (la funcion get siempre devuelve un arreglo con los datos, o un objeto, cuando no veas get entonces es que la funcion en si hace lo mismo cmo si lo hubieras llamado)
User::all(); Ejemplo de como recoger todos los registros de la tabla User.. como ves no se usa get.
User::where('name', '=' ,'MiMismo')->get(); Uso del where.... asi mismo se usan los or o where a continuacion si deseas ejemplo
User::where('name', '=' ,'MiMismo')
->where('edad', '>', '5')
->or_where('sexo', '=', 'Masc')
->get()
User::destroy(5); Ejemplo del delete...
y el update o add seria algo asi.. muy orientado a objetos, de por cierto
add.
$usuario = new User();
$usuario->name="YOMISMO";
...
$usuario.save();
con eso guarda en la base de datos.... y para editar seria parecido solo que..
$usuario = User::find(3);
$usuario->name = "YOOtravez";
...
$usuario->save();
Con eso guardaria los datos

Modelos
El modelo se encuentra en el directorio models del framework. Normalmente se aconseja para mejor trabajo poner las tablas en la base de datos en plural y aca en el frame el mismo nombre pero en singular. La tabla Users siempre se aconseja pues el framework esta implementado para usarla con el modelo User para los modulos de autenticacion etc etc.
Ejemplos de modelos serian
User
Categoria
Escuela
..
Todas corresponden a ese mismo nombre en la base de datos pero en plural alla en la BD (NOTA: no es obligatorio solo recomendado)
dentro del modelo como tal, lo unico mas importante a poner es el atributo $table = la tabla de la base de datos.

Lo demas es opcional y lo vas a ir cogiendo a medidas que usas el framework y te documentas del sitio oficial y de la documentacion de la comunidad.

Vistas
Las vistas se almacenan en el directorio views pueden ser como les dije tanto php, html como blade, el motor de plantillas de laravel que explicare mas adelante.
Si deseas organizar te aconsejo que tengas una carpeta por controlador y en cada carpeta las vistas asignadas al mismo asi es mejor para guiarte y mas organizado.

Blade y layouts
Blade es el sistema de plantillas de laravel, muy potente, de echo algo que me impacto es que use una vista completamente usando esta plantilla y cuando le hice la prueba de carga fue 2.6 ms mas rapida que una vista nativa en php usada en el framework codeigniter con los mismos elementos. algo q me impresiono mucho puesto que como hace parseo a php etc no es logico asi que miren lo bueno que es o hagan la prueba ustedes mismos, es decir que tardaria al menos 1 segundo o mas menos que usando symfony que por esta parte es muy lento.
Blade es parecido a twig pero para el que no conoce aqui va lo escencial.. Siempre recuerda, guiate en la documentacion que se encuentra disponible para mas informacion.
Herencia de plantillas
Blade usa la sintasis @extends('layout');
esta sintaxis es muy buena puesto que permite ahorrar reescribir codigo teniendo una plantilla ya echa.
en el siguiente ejemplo les muestro una plantilla sencilla y les explico luego una vista que hereda de ella y las etiquetas fundamentales.

views/layout.blade.php

<!DOCTYPE html>
<html>
<head>
<title>@section('title') Mi titulo @show</title>
<head>
<body>
@section('header')
<div> @section('tablas') Cabecera @show</div>
@show
@section('body') @show

<footer>@yield('footer') @stop</footer>
</body>
</html>

Vista ejemplo.blade.php
@extends('layout');
@section(title)
{{Hola mundo}}
@stop

@section('header')
  @section('tablas')
  @parent
  <table>...</table>
  @stop
@show

@section('body')
@if(true)
HOla mundo
@endif
@show
@section('footer')
Copyrigth MIO
@stop

.......
Explicando....
Las secciones es fragmento de codigo que siempre se va a heredar siempre y cuando se use @extends es muy bueno pues te ahorra tener que escribir lo mismo. por su parte @yield es obligatorio implementar lo que esta dentro como ves. @section puedes o no modificarlo o escribir dentro de su contenido ahora si deseas dejar lo mismo q viene del padre pues usas @parent como ves en el ejemplo y asi sucesivamente.
Otras etiquetas usadas y muy importantes (algunas)
@if()  ..... @endif
@foreach  ..... @foreach
... Ver documentacion para ver todas.

Por otra parte para mostrar datos o contenidos en vez de <?php echo $variable?>
en blade es  {{$variable}} ves q sencillo...
Todo se puede hacer en blade usando sus etiquetas y formas, lo unico que hasta ahora no se puede hacer es asignar valores a variables pero bueno siempre puedes usar php recuerda que laravel es modificable pues entonces <?php $var = 10;?> y sigues con blade ejemplko de un foreach
<table>
@foreach($datos as $dato)
<tr>
<td>
{{$dato->algo}}
</td>
</tr>
@endforeach
<table>
Ves que facil?

Espero te haya gustado este mini y empieces a usarlo... no te arrepentiras...
Suerte y Usa Laravel para una union de conocimientos. SWL

Saludos Eugenio



 
Categoría: 
Bibliografía del minitutorial: 
Personal

Comentarios