0% encontró este documento útil (1 voto)
795 vistas58 páginas

Presentacion Laravel Completo

Este documento proporciona una introducción al framework PHP Laravel 5. Explica brevemente qué es un framework, las ventajas de usar uno, y los frameworks más populares. Luego se centra en Laravel, describiendo sus características clave como Blade, Eloquent ORM, enrutamiento, y su facilidad de desarrollo. Finalmente, cubre cómo configurar el entorno de trabajo de Laravel y los conceptos fundamentales como rutas, controladores, vistas, modelos y migraciones de base de datos.

Cargado por

José Escudero
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (1 voto)
795 vistas58 páginas

Presentacion Laravel Completo

Este documento proporciona una introducción al framework PHP Laravel 5. Explica brevemente qué es un framework, las ventajas de usar uno, y los frameworks más populares. Luego se centra en Laravel, describiendo sus características clave como Blade, Eloquent ORM, enrutamiento, y su facilidad de desarrollo. Finalmente, cubre cómo configurar el entorno de trabajo de Laravel y los conceptos fundamentales como rutas, controladores, vistas, modelos y migraciones de base de datos.

Cargado por

José Escudero
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 58

Laravel 5

Framework PHP

Laravel.com
Laravel.com
¿Qué es un framework?

Laravel.com
¿Por qué utilizar un framework?

 Agilización del proceso de  Requiere tiempo para aprender y


desarrollo. dominar.
 Refuerza buenos hábitos de diseño.  Te fuerza a usar la semántica
 Código limpio y ordenado. propia del framework.
 Seguridad.
 Código mantenible.
 Amplia comunidad de
desarrolladores.
 Plugins, componentes e integración
con otras herramientas.

Laravel.com
Framework mas utilizados

Laravel.com
¿PHP como lenguaje de desarrollo web?

Laravel.com
Principales características de PHP
 Mas rápido que ASP
 Es el mas sencillo de aprender
 Acceso a mas de 20 tipos de bases de datos
 Diseño modular y de fácil ampliación
 Gran extensión de documentación
 Gran cantidad de framework, cms, etc.
 Multiplataforma
 Licencia abierta

Laravel.com
Sistema de control de versiones

GitHub

Laravel.com
Sistema de control de versiones

Laravel.com
Sistema de control de versiones
 Principales comandos git
GIT CODE
> git init
> git add FILE.txt
> git commit –m “mi primer commit”
> git branch dev
> git checkout dev
> git merge dev
> git remote add origin https://github.com/user/Project.git
> git push –u origin master

Laravel.com
¿La mejor herramienta para programar?

Laravel.com
LARAVEL 5
Laravel radica en su integración, escalabilidad y facilidad de
mantenimiento. Elegante, simple y rápido

 Blade
 Eloquent ORM
 Routing
 Middlewares
 Accesibilidad para el desarrollo FULL STAK
 Pensada para API REST
 Código abierto publicada bajo la licencia MIT
 Comunidad y documentación

Laravel.com
¿Cómo funciona Laravel?

Laravel.com
Configuración del entorno de trabajo
 Git
https://git-scm.com/downloads

 PhpStorm
https://www.jetbrains.com/phpstorm/download/
https://www.sublimetext.com/3

 Composer
https://getcomposer.org/download/

 Servidor local
https://bitnami.com/stack/wamp/installer

Laravel.com
Instalando y configurando Laravel
 Documentación
https://laravel.com/docs/5.5
COMPOSER
> composer create-project --prefer-dist laravel/laravel blog "5.5.*"

 Requerimientos
 PHP >= 7.0.0
 OpenSSL PHP Extension
 PDO PHP Extension
 Mbstring PHP Extension
 Tokenizer PHP Extension
 XML PHP Extension

Laravel.com
Rutas
 Documentación
https://laravel.com/docs/5.5/routing
 Directorio

Route::get('/saludar', function () {
return 'Hello World';
Route::get('/user/profile',
});
'UserController@showProfile')->name('profile');
Route::get('/saludar/{id}', function ($id) {
Route::get($uri, $callback);
return 'hola '.$id;
Route::post($uri, $callback);
});
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::get('/user', 'UserController@index');
Route::delete($uri, $callback);
Route::options($uri, $callback);
Route::group(['middleware' =>
['admin'],'namespace' => 'Admin'],function() {
Route::resource('/user', 'UserController');
//code
});
Laravel.com
Controlador
 Documentación
https://laravel.com/docs/5.5/controllers
 Directorio

ARTISAN
php artisan make:controller EstudianteController
php artisan make:controller Estudiante\EstudianteController
php artisan make:controller Estudiante\EstudianteController --resource

CONTROLLER
return 'Hola mundo';
return response()->json($data);
return view('saludar');
return view('saludar',$data);

Laravel.com
Vista
 Documentación
https://laravel.com/docs/5.5/views
https://laravel.com/docs/5.5/blade
 Directorio

BLADE BLADE
<!-- Stored in resources/views/layouts/app.blade.php --> <!-- Stored in resources/views/child.blade.php -->
<html>
<head> @extends('layouts.app')
<title>App Name - @yield('title')</title> @section('title', 'Page Title')
</head>
<body> @section('sidebar')
@section('sidebar') @parent
This is the master sidebar. <p>This is appended to the master sidebar.</p>
@show @endsection
<div class="container"> @section('content')
@yield('content') <p>This is my body content.</p>
</div> @endsection
</body>
</html>
Laravel.com
Modelo
 Documentación
https://laravel.com/docs/5.5
 Directorio

ARTISAN
php artisan make:model Estudiante
php artisan make:model Model\Estudiante
php artisan make:model Model\Estudiante -m

use Illuminate\Notifications\Notifiable; MODEL MODEL


// continue code
use Illuminate\Database\Eloquent\SoftDeletes;
protected $table = 'estudiantes';
protected $primarykey = 'id';
class Estudiante extends Model
public $timestamps = true;
{
protected $fillable = [
use Notifiable;
'id', 'imagen', 'paterno', 'materno', 'nombres',
use SoftDeletes;
'telefono', 'direccion', 'fecha_nac',
// continue code
];
}

Laravel.com
Trabajando con bases de datos
 Configurar el archivo .env
CMD
copy .env.example .env
php artisan key:generate

.ENV .ENV
APP_NAME=Laravel
APP_NAME=Laravel
APP_ENV=local
APP_ENV=local
APP_KEY=base64:HMU5/JkS1MEqh3n2+GRBpp+hm95Yl
APP_KEY=
QhtqZdw/BMbwfE=
APP_DEBUG=true
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_LOG_LEVEL=debug
APP_URL=http://localhost
APP_URL=http://localhost
DB_CONNECTION=mysql
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_HOST=127.0.0.1
DB_PORT=3306
DB_PORT=3306
DB_DATABASE=homestead
DB_DATABASE=db_opencode
DB_USERNAME=homestead
DB_USERNAME=root
DB_PASSWORD=secret
DB_PASSWORD=system

Laravel.com
Tablas de ejemplo
Ejemplo 1 Ejemplo 2

Laravel.com
Migraciones
 Documentación
https://laravel.com/docs/5.5/migrations
 Directorio

php artisan make:migration create_estudiantes2_table ARTISAN


php artisan migrate
php artisan migrate:refresh
php artisan migrate:rollback
php artisan migrate:reset
public function up() MIGRATIONS //continue code
MIGRATIONS
{
$table->string('imagen',150)->nullable();
Schema::create('estudiantes', function (Blueprint $table) {
$table->string('paterno',25);
$table->increments('id');
$table->string('materno',25)->nullable();
//continue code
$table->string('nombres',50);
$table->integer('telefono')->nullable();
$table->timestamps();
$table->text('direccion');
});
$table->date('fecha_nac');
}
$table->timestamps();
$table->softDeletes();

Laravel.com
Migraciones
 Llaves foráneas en migraciones

MIGRATIONS
$table->foreign('estudiante_id')->references('id')->on('estudiantes')->onDelete('set null');
$table->foreign('estudiante_id')->references('id')->on('estudiantes')->onDelete('cascade');

Laravel.com
Migraciones Error
 Directorio

PROVIDER

use Illuminate\Support\Facades\Schema;

public function boot()


{
Schema::defaultStringLength(150);
}

Laravel.com
Seeders
 Documentación
https://laravel.com/docs/5.5/seeding
 Directorio

php artisan make:seeder EstudianteTableSeeder ARTISAN


php artisan db:seed
php artisan migrate:refresh --seed

SEEDER // continue code


SEEDER
\App\Model\Estudiante::create([
public function run() 'imagen' => 'perfil.jpg',
{ 'paterno' => 'Rocabado',
// continue code 'materno' => 'Valdez',
} 'nombres' => 'Lucho',
'telefono' => '69854785',
'direccion' => 'la paz el alto, av. juan pablo II',
'fecha_nac' => '2018-02-12',
]);

Laravel.com
Autenticación de usuarios
 Documentación
https://laravel.com/docs/5.5/authentication#authentication-quickstart
php artisan make:auth ARTISAN
php artisan migrate:refresh --seed
php artisan serve --host=192.168.0.20 --port=8282

Laravel.com
Integración de plantillas AdminLTE
 Documentación
https://adminlte.io/
ASSETS MENU
{{URL::asset(‘script.js')}}
{{URL::asset(‘style.css')}} <li class="@if(request()->is('home')) open @endif ">
{{URL::asset(‘img/perfil.jpg')}} <a href="{{url('home')}}"></a>
{{URL::asset(‘multimedia/play.mp4')}} </li>

Laravel.com
CRUD – Listar
 Documentación
https://laravel.com/docs/5.5/responses#other-response-types

ROUTE
Route::get('/estudiantes',‘Estudiante\EstudianteController@index');

// App\Http\Controllers\Estudiante; CONTROLLER VIEW


@foreach($estudiante as $estudiantes)
<tr>
public function index(){
<td>{{$estudiantes->nombres}}</td>
$estudiante = Estudiante::all();
<td>{{$estudiantes->paterno}}</td>
// return response()->json($estudiante);
<td>{{$estudiantes->materno}}</td>
// return view('pages.estudiante');
</tr>
return view('pages.estudiante' ,compact('estudiante')); @endforeach
}

Laravel.com
Paginación
 Documentación
https://laravel.com/docs/5.5/pagination

ROUTE
Route::get('/estudiantes',‘Estudiante\EstudianteController@index');

CONTROLLER VIEW
// App\Http\Controllers\Estudiante;

public function index() </table>
{ <div class="text-center">
// $estudiante = Estudiante::select('*')- {!!$estudiante->links()!!}
>orderBy('id','desc‘)->paginate(3); </div>
$estudiante = DB::table('estudiantes')->paginate(3);
return view('pages.estudiante',compact('estudiante'));
}

Laravel.com
CRUD – Crear
 Documentación
https://laravel.com/docs/5.5/queries#inserts
https://laravel.com/docs/5.5/eloquent-relationships#the-save-method
https://laravel.com/docs/5.5/eloquent-relationships#the-create-method
ROUTE
Route::post('/estudiantes',‘Estudiante\EstudianteController@store');

CONTROLLER VIEW
Estudiante::insert([
'nombres' => $request->input('nombres'),
]); // app/resources/views/pages/estudiante.blade.php

$estudiante = new Estudiante(); <form action="{{url('estudiantes')}}" method="POST">


$estudiante->nombres = $request->input('nombres'); {{csrf_field()}}
$estudiante->save(); <input type="text" name="nombres">
<button type="submit"> Registrar</button>
DB::table('estudiantes')->insert([ </form>
'nombres' => $request->input('nombres'),
]);

Laravel.com
Validaciones en el servidor
 Documentación
https://laravel.com/docs/5.5/validation
$this->validate($request, [ CONTROLLER VIEW
'nombres' => 'required|min:5‘, @if ($errors->any())
]); <div class="alert alert-danger">
<ul>
$this->validate($request, [ @foreach ($errors->all() as $error)
'nombres' => 'required|min:5', <li>{{ $error }}</li>
], [ @endforeach
'nombres.required' => 'El campo nombre es obligatorio. ', </ul>
'nombres.min' => 'El nombre debe tener al menos 5 </div>
caracteres. ', @endif
]);

public static $rules =[ MODEL


'nombres' => 'required|min:5',
];
public static $messages =[
'nombres.required' => 'El campo nombre es Obligatorio',
];

Laravel.com
Cambiando el idioma a español
 Documentación
https://github.com/Laraveles/spanish
 Directorio

 Configurar el idioma

app.php

'locale' => 'en', 'locale' => 'es',

Laravel.com
Validaciones en el front
 Documentación
http://www.formvalidator.net/
BLADE BLADE
<script src="{{URL::asset('jquery.form-validator.js')}}">
</script>
<div class="form-group">
<script> <label for="nombres">Nombres: </label>
$(window).load(function () { <input type="text" name="nombres" id="nombres"
$.validate({ class="form-control" data-sanitize="trim upper" data-
lang : 'es', validation="required, length" data-validation-
modules : 'sanitize, date, security, file, html5', length="min3">
}); </div>
});
</script>

Laravel.com
Mensajes Flash
 Documentación
https://laravel.com/docs/5.5/session#using-the-session

CONTROLLER VIEW
@if(Session::has('success'))
use Session; {{Session::get('success')}}
@endif
Session::flash('success', 'Registro agregado con exito!!!');
Session::flash('error', 'Error al insertar!!!'); @if(Session::has('error'))
{{Session::get('error')}}
@endif

Laravel.com
CRUD – Actualizar
 Documentación
https://laravel.com/docs/5.5/queries#updates
ROUTE
Route::get('/estudiantes/{id}/edit ','Estudiante\EstudianteController@edit');
Route::post('/estudiantes/{id} ','Estudiante\EstudianteController@update');

public function edit($id) CONTROLLER VIEW


{
$estudianteUpdate = Estudiante::find($id); <form action="{{ !isset($estudianteUp) ? url('/estudiantes') :
$estudiante = Estudiante::all(); url('/estudiantes/'.$estudianteUp->id) }}" method="POST">
return {{csrf_field()}}
view('pages.estudiante',compact('estudianteUp','estudiante' <input type="text" name="nombres" id="nombres"
)); class="form-control" value="{{ isset($estudianteUp) ?
} $estudianteUp->nombres : '' }}" data-sanitize="trim upper"
data-validation="required, length" data-validation-
public function update(Request $request, $id) length="min3">
{ </form>
DB::table('estudiantes')->where('id',$id)->update(array(
'nombres' => $request->input('nombres'), <td><a href="{{url('/estudiantes/'.$estudiantes-
'paterno' => $request->input('paterno'), >id.'/edit')}}">Editar</a></td>
'materno' => $request->input('materno'),
));
}

Laravel.com
CRUD – Eliminar
 Documentación
https://laravel.com/docs/5.5/queries#deletes
ROUTE
Route::get('/estudiantes/{id}/eliminar','Estudiante\EstudianteController@destroy');

CONTROLLER VIEW

public function destroy($id)


{ <td>
$estudiante = Estudiante::findOrFail($id); <a href="{{url('/estudiantes/'.$estudiantes-
$estudiante->delete(); >id.'/eliminar')}}"> Eliminar</a>
return redirect()- </td>
>action('Estudiante\EstudianteController@listarEstudiante')
->with('success','eliminado con exito');
}

Laravel.com
 Documentación
Middlewares
https://laravel.com/docs/5.5/middleware
 Directorio

ROUTE
Route::get('/estudiantes','Estudiante\EstudianteController@index')->middleware('auth');

public function __construct(){


CONTROLLER
$this->middleware('auth');
}

ARTISAN
php artisan make:middleware NameMiddleware

Laravel.com
Redireccionando a un usuario según su rol
ARTISAN
php artisan make:middleware AdminMiddleware

MIDDLEWARE Kernel.php
protected $routeMiddleware = [
public function handle($request, Closure $next) 'admin' =>
{ \App\Http\Middleware\AdminMiddleware::class,
if(auth()->user()->name == 'admin'){ ];
return $next($request);
}else{
return redirect('/home');
} ROUTE
Route::group(['middleware' =>
}
['auth','admin'],'namespace' => 'Estudiante'],function() {
Route::get('/estudiantes','EstudianteController@index');
});

Laravel.com
CRUD con AJAX - Listar
ROUTE
Route::get('estudiantes/estudianteDataAll','Estudiante\EstudianteController@estudianteDataAll');

public function estudianteDataAll(){


CONTROLLER JQUERY
$estudiante = Estudiante::select('*')- $('#estudiante-content').on('click','.pagination li
>orderBy('id','desc')->paginate(3); a',function(e){
return e.preventDefault();
view('pages.estudiante_data',compact('estudiante')); $.ajax({
} type: 'get',
url: $(this).attr('href'),
success: function (data) {
var listarEstudiante = function () { JQUERY $('#estudiante-content').empty().html(data);
$.ajax({ }
type: 'get', });
url: '/estudiantes/estudianteDataAll', });
dataType: 'html',
success: function (data) {
$('#estudiante-content').empty().append(data);
}
});
};

Laravel.com
CRUD con AJAX - Crear
ROUTE
Route::post('/estudiantes','Estudiante\EstudianteController@store')->name('estudiante.store');

CONTROLLER
public function store(Request $request)
{
if ($request->ajax())
{
$estudiante = new Estudiante();
$estudiante->nombres = $request->input('nombres');
$estudiante->paterno = $request->input('paterno');
$estudiante->materno = $request->input('materno');
$result = $estudiante->save();
if ($result) {
return response()->json(['success' => 'true']);
}else {
return response()->json(['success' => 'false']);
}
}
}

Laravel.com
CRUD con AJAX - Crear
SCRIPT

datatype: 'json',
$('#form-estudiante').submit(function (e) { processData: false,
e.preventDefault(); contentType: false,
$form = $(this); success: function (data) {
var route = "{{ route('estudiante.store') }}"; if (data.success) {
var token = $('input[name=_token]').val(); $('#form-estudiante').trigger('reset');
var data = new FormData(); listarEstudiante();
data.append('nombres', $('#form-estudiante console.log('insertado correctamente');
input:text[name=nombres]').val()); }
data.append('paterno', $('#form-estudiante },
input:text[name=paterno]').val()); error: function (data) {
data.append('materno', $('#form-estudiante $.each(data.responseJSON.errors, function (index,
input:text[name=materno]').val()); error) {
$.ajax({ console.log(error);
url: route, });
headers: {'X-CSRF-TOKEN': token}, }
type: 'post', });
data: data, });

};

Laravel.com
CRUD con AJAX - Actualizar
ROUTE
Route::get('/estudiantes/{id}/edit ','Estudiante\EstudianteController@edit');
Route::post('/estudiantes/{id}','Estudiante\EstudianteController@update');

public function edit($id)


CONTROLLER CONTROLLER
public function update(Request $request, $id)
{ {
$estudiante = Estudiante::find($id); if ($request->ajax())
return view('estudiante',compact('estudiante')); {
} $result = DB::table('estudiantes')->where('id',$id)-
>update(array(
'nombres' => $request->input('nombres'),
var editarEstudiante = function (id) {
SCRIPT 'paterno' => $request->input('paterno'),
var route = "{{url('/estudiantes')}}/"+id+'/edit'; 'materno' => $request->input('materno'),
$.get(route, function (data) { ));
$.each(data, function (i, full) { if ($result) {
$('#form-estudiante #updateEstudiante-id').val('update'); return response()->json(['success' => 'true']);
$("#form-estudiante input:hidden[name=estudiante-
}else {
id]").val(full.id);
return response()->json(['success' => 'false']);
$("#form-estudiante input:text[name=nombres]").val(full.nombres);
$("#form-estudiante input:text[name=materno]").val(full.materno); }
$("#form-estudiante input:text[name=paterno]").val(full.paterno); }
}); }
});
};

Laravel.com
CRUD con AJAX – Actualizar (CODIGO MEJORADO)
$('#form-estudiante').submit(function (e) { SCRIPT SCRIPT
else {
e.preventDefault();
var route = "{{ route('estudiante.store') }}";
$form = $(this);
$.ajax({
if (!$form.isValid()) return false;
url: route,
var token = $('input[name=_token]').val();
headers: {'X-CSRF-TOKEN': token},
if ($('#updateEstudiante-id').val()){
type: "POST",
var route = "{{ route('estudiante.update') }}";
data: new FormData($form[0]),
$.ajax({
dataType: 'json',
url: route,
processData: false,
headers: {'X-CSRF-TOKEN': token},
contentType: false,
type: "POST",
success: function (data) {
data: new FormData($form[0]),
if (data.success = true) {
dataType: 'json',
$('#estudianteModal').trigger('reset');
processData: false,
}
contentType: false,
},
success: function (data) {
error: function (data) {
if (data.success) {
$.each(data.responseJSON.errors, function (index, error) {
$('#updateEstudiante-id').val('');
console.log(error);
$('#form-estudiante').trigger('reset');
});
}
}
},
});
error: function (data) {
}
$.each(data.responseJSON.errors, function (index, error) {
});
console.log(error);
});
// if (data.status == 422) {
// console.clear();
// }
}
});

Laravel.com
}
CRUD con AJAX - Eliminar
ROUTE
Route::delete('/estudiantes/{id?}','Estudiante\EstudianteController@destroy')->name('estudiante.destroy');

var eliminarEstudiante = function (id) { SCRIPT CONTROLLER


var route = "{{url('estudiantes')}}/"+id;
var token = $('input[name=_token]').val();
$.ajax({
url:route, public function destroy($id)
headers: {'X-CSRF-TOKEN':token},
{
type: 'DELETE',
dataType : 'json', $estudiante = Estudiante::findOrFail($id);
success: function(data) $result = $estudiante->delete();
{ if ($result) {
if (data.success){ return response()->json(['success' => 'true']);
listarEstudiante(); }else {
}
return response()->json(['success' => 'false']);
},
error: function (data) }
{ }
if (data.error){
console.log('error al eliminar '+error);
}
}
});
};

Laravel.com
Plugins para el tratamiento de mensajes
 Documentación
https://kamranahmed.info/toast
https://craftpip.github.io/jquery-confirm/

Laravel.com
Subiendo una imagen con AJAX
 Documentación
http://image.intervention.io/
if ($request->file('imagen')) CONTROLLER
{
$this->validate($request,[
'imagen' => 'image|mimes:jpeg,bmp,png|max:2048',
],[
'imagen.image' => 'el archivo no tiene un formato valido de una imagen. ',
'imagen.max' => 'la imagen debe tener como maximo 2 MegaBytes. ',
'imagen.mimes' => 'el archivo debe tener formato tipo imagen, jpg, jpeg, png.
',
]);

$random = str_random(20);
$extension = $request->file('imagen')->getClientOriginalExtension();
$file_name = 'estudiante-'.$random.'.'.$extension;
$path = public_path('upload/images/'.$file_name);
Image::make($request->file('imagen'))->fit(300,300)->save($path);
}

if(data.imagen_portada_path){ SCRIPT
$('.image-profile').attr('style',"background: url({{url('images')}}/"+data.imagen_portada_path+"?"+
new Date().getTime()+")");
} Laravel.com
Discos en laravel (storage)
 Documentación
https://laravel.com/docs/5.5/filesystem
 Directorio

Filesystem.php
'disks' => [
'imagen' => [
'driver' => 'local',
'root' => storage_path('app/opencode/imagen'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
]

Laravel.com
Subiendo multimedia al Storage
$imagen_perfil = $request->file('imagen_perfil');
CONTROLLER
if ($imagen_perfil) {
$this->validate($request, [
'imagen_perfil' => 'image|mimes:jpeg,bmp,png|max:5120',
], [
'imagen_perfil.image' => 'El archivo no tiene un formato valido de una
imagen. ',
'imagen_perfil.max' => 'La imagen debe tener como maximo 5 MegaBytes. ',
'imagen_perfil.mimes' => 'El archivo debe tener formato tipo imagen, jpg,
jpeg, png. ',
]);

$random = str_random(20);
$extension = $imagen_perfil->getClientOriginalExtension();
$imagen_perfil_path = 'perfil_' . $random . '.' . $extension;
$image_fit = Image::make($imagen_perfil)->fit(240,240)->encode();
Storage::disk('images')->put($imagen_perfil_path, $image_fit);
}

Laravel.com
 Documentación
Helpers
https://laravel.com/docs/5.5/helpers
 Directorio

EstudiantePublic.php App.php
<?php 'aliases' => [
namespace App\Helpers; 'EstudiantePublic' =>
class PublicData App\Helpers\EstudiantePublic::class,
{ ]
public static function show()
{
$data = \App\Model\Estudiantes::first();
if(isset($data)){ BLADE
return $data;
}else return 'no data';
{{EstudiantePublic::show()->nombres}}
}
}

Laravel.com
Manejo de errores 404
 Documentación
https://laravel.com/docs/5.5/errors
 Directorio

Handler.php
public function render($request, Exception $exception)
{
if($this->isHttpException($exception)){
switch ($exception->getStatusCode()) {
case 404:
return response()->view('errors.404',[],404);
break;
case '500':
return response()->view('errors.500',[],500);
break;
default:
return $this->renderHttpException($exception);
break;
}
}
return parent::render($request, $exception);
}

Laravel.com
Eventos en laravel
 Documentación
https://laravel.com/docs/5.5/events
 Directorio

ARTISAN
php artisan make:event SessionEvent

Laravel.com
Manejo de roles y privilegios con spatie
 Documentación
https://github.com/spatie/laravel-permission

Laravel.com
DataTables
 Documentación
https://datatables.net/
http://yajrabox.com/docs/laravel-datatables/master
COMPOSER
composer require yajra/laravel-datatables-oracle:^8.0

CONTROLLER

return datatables()->of($data)->toJson();

Laravel.com
Restablecimiento de password
 Documentación
https://laravel.com/docs/5.5/passwords

.ENV

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

Laravel.com
Homestead
 Documentación
https://laravel.com/docs/5.5/homestead

Laravel.com
Las API REST
 Documentación
https://lumen.laravel.com/docs/5.7

Laravel.com
Subiendo proyecto laravel a un hosting
 Documentación
https://www.000webhost.com/

Laravel.com
GRACIAS

Laravel.com
Por: Clynroje
Email: [email protected]
Wsp: 69888707

Laravel.com

También podría gustarte