Sie sind auf Seite 1von 10

...:::: APUNTES LARAVEL ::::...

..::: Instalacion de laravel para proyecto base :::..


composer create-project --prefer-dist laravel/laravel NOMBRE_PROYECTO
//Version anterior de Laravel (5.2)
composer create-project --prefer-dist laravel/laravel NOMBRE_PROYECTO "5.2.*"
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
..::: Configuracion del proyecto :::..
/Config/App.php
debug: Muestra los errores con detalles
timezone: Zona horaria donde se encuentran America/Santiago
locale: defecto esta en ingles 'en' -> pasarlo a espaol 'es'
Este archivo hace referencia a otro llamado .env el cual tiene realmente toda la
s configuraciones
/Config/Database.php
Configuracion de que gestor de base de datos se utilizara
/Config/Auth.php
Archivo de autentificacion
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
..::: Comandos :::..
* Comandos artisan:
//Ayuda de comando artisan
directorio > php.artisan - h
//Asignar un nombre a nuestra aplicacin
directorio > php artisan app:name Market
//Este comando sirve para que artisan nos asigne un puerto
//Dentro de la carpeta raiz del proyecto
php artisan serve
* para pararlo se debe presionar ctrl + c
**************** RUTAS *******************
/*Rutas sin parametros*/
Route::get('/', function () {
return view('welcome');
});
//Sin parametos
Route::group(['middleware' => ['web']], function(){
route::get('usuario',function(){

return 'Hola mundo';


});
});
//Con parametos
Route::group(['middleware' => ['web']], function(){
route::get('usuario/{parametro}',function($parametro){
return 'Ruta con parametros '.$parametro;
});
});
//Con restrincion "SOLO NUMEROS"
Route::group(['middleware' => ['web']], function(){
route::get('usuario/{parametro}',function($parametro){
return 'Ruta con parametros '.$parametro;
})
->where('parametro','[0-9]+');
});
//Con restricion "SOLO LETRAS"
Route::group(['middleware' => ['web']], function(){
route::get('usuario/{parametro}',function($parametro){
return 'Ruta con parametros '.$parametro;
})
->where('parametro','[A-Za-z]+');
});

/*Rutas con parametros*/

******************************************

******* Controladores ********

Route::group(['middleware' => ['web']], function(){


//nombre de la ruta limpia
route::get('escritorio',[
//Se le indica que a la ruta 'escritorio' se le asignara el cont
rolador DesktopController, el cual cargara index.
//index contiene la vista 'welcome'
'as'=> 'escritorio','uses' => 'DesktopController@index'
]);
});
*NOTA SOLO PARA ESTE EJEMPLO: Se debe crear un controlador (php artisan make:con
troller DesktopController) y luego al controlador pasarle una vista.

class DesktopController extends Controller


{
public function index()
{
return view('welcome');
}
}
En este caspo la vista seria (welcome).

/*Controlador basico creado para mostrar vista*/


Route::group(['middleware' => ['web']], function(){
route::get('Producto','Producto\ProductoController@index');
});
* Crear ruta group
Se almacenan en app/http/controllers
//Controlador basico
php artisan make:controller carpeta/nombreController
//Controlador con recursos REST
php artisan make:controller carpeta/nombreController --resource
//Desde el enrutador se llama de la siguente manera
route::resource('Marca','Producto\MarcaController');
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
************ Modelos ************
* Los modelos en laravel estan gestionados por Eloquent ORM.
Que es una implementacin del patron ActiveRecord.
* En este patrn cada tabla de la base de datos tiene su correspondiente
modelo en nuestra aplicacin, y una instancia del modelo se corresponde con
un registro de la tabla.
//Como se crea un modelo
php artisan make:model carpetaModels\Product\Product
#fillable=[]
* Dentro de este array se pueden especificar cuales son los campos de la tabla
pueden ser llamados o rellenados.
#primarykey
Eloquent asume que la clave principal es un valor entero de incremento lo que
significa que por defecto la clave principal ser arrojada a un INT automaticament
e.
//Ejemplo

protected $primarykey = 'id';


************ Relaciones ************
Las tabalas de la bases de datos suelen estar relacionadas entre si. Eloquent ha
ce
que la gestin y el trabajo con estas relaciones sean faciles, y es compatible con
varios tipos de diferentes relaciones.
1.2.3.4.5.6.-

Uno a uno (one to one)


Uno a muchos (one to many)
Muchos a muchos (many to many)
Muchos a travs de (has many through)
Relaciones polimrficas (polymorphic relations)
Relacin polimrfica de muchos a muchos

#product
public function mark(){
//-hasmany -tienes muchas
return $this->hasMany(Mark:class);
}
#Mark
public function mark(){
//-belongto - pertenece a
return $this->belongsto(Product:class);
}
#Migraciones
Las migraciones son como el control de versiones de su base de datos. lo que per
mite
a un equipo modificar y compartir el esquema de base de datos de la aplicacin de
forma sencilla.
#Como generar migraciones
php artisan make:migration create_mark_table
php artisan make:migration create_product_table

*Schema de tabla porductos


public function up()
{
Schema::create('products', function(Blueprint $table){
$table->increments('id');
$table->string('name',100);
$table->decimal('prince',5,2);
$table->integer('marks_id')->unsigned;
//$table->timestamps();
//---------------------------//table->primary('id');
$table->foreign('marks_id')->references('id')->on('marks');

});
}
public function down()
{
//
Schema::drop('products');
}

*Schema de tabla mark


public function up()
{
Schema::create('marks', function (Blueprint $table){
$table->increments('id');
$table->string('name',50);
});
}
public function down()
{
//
Schema::drop('marks');
}

//Comando que ejecuta la migracion


php artisan migrate

#estructura
Esta clase de migracin tiene dos metodos: UP y DOWN.
* El metodo UP se utiliza para agregar tablas, columnas y los indices.
* El metodo DOWN es simplemente revertir las operaciones llevada acabo.
public function up(){
}
public function down(){
}
******* VISTAS *******
#donde se almacena
Las vistas se almacenan en el drectorio resources
#Como se accede a la vista
return view('Vista');

******* LARAVEL COLLECTIVE *******


#Que es laravel collective?
Es una organizacion comunitaria diseada para mantener los componentes han sido re
tirados
del nucleo de marco laravel, durante sus actualizaciones pero que aun asi siguen
siendo de
gran utilidadx para algunos desarrolladores.
#Documentacin oficial:
https://laravelcollective.com

1.3.2.3.4.5.rs

https://laravelcollective.com/docs/5.2/html
copiar "laravelcollective/html":"^5.2.0"
ir al archivo composer.json
Pegar "laravelcollective/html":"^5.2.0"
ir a la consola ir poner composer update
ir nuevamente a https://laravelcollective.com/docs/5.2/html y copiar provide

Collective\Html\HtmlServiceProvider::class,
ir a la ruta config/app/ y pegar Collective\Html\HtmlServiceProvider::class,
Guardar
Nuevamente ir ahttps://laravelcollective.com/docs/5.2/html
Copiar los aliases
'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,
9.- ir a http://getbootstrap.com/getting-started/#download
10.- Descargar Bootstrap
11.- Descomprimir el archivo .rar y pegar el contenido en la carpeta /public
******* BLADE TEMPLATE *******
5.6.7.8.-

#Que es Blade Template?


Blade es el motor de plantillas simple, pero potente proporcionado con laravel.
A
diferencia de otros motores de plantillas PHP Blase no restringe el uso de codig
o
PHP normal en sus vistas.
#Donde se almacena
Los archivoss de vista Blade utilizan la extension de archivo .blade.php y norma
lmente
se almacenan en el directorio Resource/views.
#Definir el diseo
Dos de las principales ventajas del uso de blade son la herencia de plantillas y
secciones.
* La directiva @yield se utiliza para mostrar el contenido de un seccion determi
nada.
* La directiva @section, como su nombre lo indica, define una seccion de conteni
dos.
#Extensin del diseo
Dos principales ventajas del uso de blade son la herencia de plantillas y seccio

nes.
@extends ("layouts.master")
@section ('title', 'Page Title')
@section ('sidebar')
@parent <= Es una seccion, lo que le permite aadir al contenido de seccion de d
iseo,
tales como una barra lateral o pie de pagina.
@ensection
@section ('content')
<p>This is my body content</p>
@endsection
Al definir una pagina secundaria es posible utilzar la directiva @extends para e
specificar
que diseo de la pagina debe "heredar" a travs de @section se pueden inyectar secci
ones en las
secciones de diseo.

...::: Paginacin de registros :::...


Metodo ->Paginate()
Paginate es el metodo prporcionado por laravel que automaticamente se encargar d
e establecer
el limite adecuado y ajusta en base en la pagina actual que esta siendo vista po
r el usuario.
1- En el controlador colocar el el siguente codigo
select('products.id','products.name as product','price','marks.name as mark')
->join('marks','marks.id','=','products.marks_id')
->paginate(2);
//Se cambio get() por paginate()
2.- En la vista agregar el siguente codigo
<div class="text-center">
{!!$products->links()!!}
</div>
:::::::::::::::::::::::::::::::::::::::::::
...::: Mensajes Flash :::...
1.- Agregar en namespace
use Session; //Su utilizara para los mensajes flash
2.- agregar en despues de create(), update() y delate() el siguente codigo

Session::flash('save','Se ha creado correctamente');


3.- Crear carpeta Portails
4.- Crear fichero donde iran todos los mensajes messages.blade.php
5.- agregar la estructura de los mensajes
/*si la sesion se llama update*/
@if (Session::has('update'))
<div class="alert alert-success" role="alert">
<strong>{{Session::get('update')}}</strong>
</div>
@endif
6.- Llamarlo desde las vista (index - product) donde se ejecutaran
@include('partials.messages')

#Observacin
//Se utilizara:
@if(Session:has('success')
@endif
//Para pintarlo desde una vista
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Validacin de formularios
* En la carpeta request se guardan todas las validaciones.
1.- En la consola cmd crear un request (php artisan make:request Product\Product
CreateRequest)
2.- Definifir los namespaces en el controlador de Product ()
3.- Cambiar nombre de public function store(Request $request) a public function
store(ProductCreateRequest $request)
4.- ir a ProductCreateRequest activarlo
public function authorize()
{
return true;
}
5.- crear las validaciones
public function rules()
{
return [
#Tabla prodcuts y campo name
'name'
=> 'required|min:3|unique:products,name',
'price'
=> 'required',
'marks_id' => 'required'
];
}

7.- agregar el siguente codigo en el archivo messages


@if(count($errors)>0)
<div class='alert alert-danger' roler='alert'>
<strong>Errores:</strong>
<ul>
@foreach($errors->all() as $error)
<li>{{$error}}</li>
@endforeach
</ul>
</div>
@endif
8.- incluir el archivo messages en la vista create
@include('partials.messages')

:::::::::::: Para actualizar ::::::::::::::::::


1.el
2.3.-

Lo mismo que create, solo cambia que al momento de actualizar se debe enviar
codigo id del registro a name
incluir en los namespaces (use Illuminate\Routing\Route;)
Para eso se crea un contructor
public function __construct(Route $route){
#Inicializo $route y lo guardo en route, haciendo de esta una variable g
lobal
$this->route = $route;
}
4.- acceder a la tabla product una vez iniciaizado el constructor
public function rules()
{
return [
#Tabla prodcuts y campo name
Obt
engo el valor del producto
'name'
=> 'required|min:2|unique:products,name,'.$this->route->
getparameter('product'),
'price'
=> 'required',
'marks_id' => 'required|not_in:0'
];
}
5.- 8.- incluir el archivo messages en la vista createedit
@include('partials.messages')
*NOTAS:
1.- La base de datos del proyecto se llamara curso_laravel
2.-

...::: Crear login con Auth Scaffolding :::...

php artisan make:auth


:::::::::::::::::::::::::::::::::::::::::::::::
...::: Middleware :::...
Los middleware, son un mecanismo que nos permite agregar filtros a cada peticion
HTTP realizada. La variedad de los middleware, nos permite
asignar restricciones por zona horaria, geolocalizacion, login, edad, genero, ro
l o tipo de usuario, basicamente todo lo que quieras.
Esto permite bloquear el acceso a ciertas areas de nuestra aplicacin.
#Donde se encuentra
app/Http/Middleware
#Como crear un Middleware
php artisan make:middleware nombreMiddlware
#Que mas trae los Middleware
Middleware:
Para limitar facilmente el numero de peticiones que una direccin IP determinada p
uede hacer una ruta de ms de un numero determinado de minutos.
Grupos de Middlewares:
Permite agrupar varios middlewares, en una sola clave unica.
app/Http/kernel.php

//Para obligar a logearse a los usuarios antes de ocupar el sistema se debe agre
gar el siguente codigo al archivo routes.php
->middleware('auth')
//Ejemplo
route::get('dashboard','Desktop\DashboardController@index')->middleware('auth');
//Para realizar la misma funcion desde el controlador se debe crear una construc
tor y llamar al siguente objeto
public function __construct(){
$this->middleware('auth');
}
1.- php artisan make:middleware AdminMiddleware
********** PENDIENTE ****************************

Das könnte Ihnen auch gefallen