NF2 - Framework Laravel
ESTRUCTURA DIRECTORIOS Directorio App
El directorio app contiene el código prinicipal de tu aplicación. Exploraremos este directorio con más detalle pronto; sin embargo, casi todas las clases en tu aplicación estarán en este directorio.
Directorio Bootstrap
El directorio bootstrap contiene el archivo app.php que maqueta el framework. Este directorio también almacena un directorio cache que contiene archivos generados por el framework para optimización de rendimiento como los archivos de cache de rutas y servicios.
Directorio Config
El directorio config, como el nombre implica, contiene todos los archivos de configuración de tu aplicación. Es una buena idea leer todos estos archivos y familiarizarte con todas las opciones disponibles para ti.
Directorio Database
El directorio database contiene las migraciones de tu base de datos, model factories y seeders. Si lo deseas, puedes también usar este directorio para almacenar una base de datos SQLite.
Directorio Public
El directorio public contiene el archivo index.php, el cual es el punto de acceso para todas las solicitudes llegan a tu aplicación y configura la autocarga. Este directorio también almacena tus assets, tales como imagenes, JavaScript y CSS.
Directorio Resources
El directorio resources contiene tus vistas así como también tus assets sin compilar tales como LESS, Sass o JavaScript. Este directorio también almacena todos tus archivos de idioma.
Directorio Routes
El directorio routes contiene todas las definiciones de rutas para tu aplicación. Por defecto, algunos archivos de rutas son incluidos con Laravel: web.php, api.php, console.php y channels.php.
El archivo web.php contiene rutas que RouteServiceProvider coloca en el grupo de middleware web, que proporciona estado de sesión, protección CSRF y encriptación de cookies. Si tu aplicación no ofrece una API sin estado, todas tus rutas probablemente serán definidas en el archivo web.php.
El archivo api.php contiene rutas que RouteServiceProvider coloca en el grupo de middleware api, que proporcionan limitación de velocidad. Estas rutas están pensadadas para no tener estado, así que las solicitudes que llegan a la aplicación a través de estas rutas están pensadas para ser autenticadas mediante tokens y no tendrán acceso al estado de sesión.
El archivo console.php es donde puedes definir todas los comandos basados en Closures de tu aplicación. Cada Closure está enlazado a una instancia de comando permitiendo una forma simple de interactuar con los métodos de entrada y salida de cada comando. Aunque este archivo no define ninguna ruta HTTP, sí define puntos de entrada en consola (rutas) a tu aplicación.
El archivo channels.php es donde puedes registrar todos los canales de transmisión de eventos que tu aplicación soporta.
Directorio Storage
El directorio storage contiene tus plantillas compiladas de Blade, sesiones basadas en archivos, archivos de caches y otros archivos generados por el framework. Este directorio está segregado en los directorios app, framework y logs. El directorio app puede ser usado para almacenar cualquier archivo generado por tu aplicación. El directorio framework es usado para almacenar archivos generados por el framework y cache. Finalmente, el directorio logs contiene los archivos de registros de tu aplicación.
El directorio storage/app/public puede ser usado para almacenar archivos generados por el usario, tales como imagenes de perfil, que deberían ser accesibles públicamente. Debes crear un enlace simbólico en public/storage que apunte a este directorio. Puedes crear el enlace usando el comando php artisan storage:link.
El Directorio Tests
El directorio tests contiene tus pruebas automatizadas. Una prueba de ejemplo de PHPUnit es proporcionada. Cada clase de prueba debe estar precedida por la palabra Test. Puedes ejecutar tus pruebas usando los comandos phpunit o php vendor/bin/phpunit.
Directorio Vendor
El directorio vendor contiene tus dependencias de Composer.
=RUTAS BÁSICAS
Dentro de Routers->Web
Route::get('mundo', function () {
return 'Hello World';
});
Creamos un controlador vacio, App->http->Controller->
php artisan make:controller MoviesController --plain
en route
Route::get('/ejemplo', 'PeliculasController@index');
en controlador
public function index(){
echo "hola Julio";
}
//verbos HTTP múltiples
Route::match(['get', 'post'], '/', function () {
//
});
//verbos HTTP cualquiera
Route::any('/', function () {
//
});
//dentro de la misma vista
Route::get('/show/{id?}',function($id="122"){
return $id;
})->name('show');
Route::get('/par-o-impar-{numero}',function($numero){ // no hace falta usar '/'
return $numero;
//return redirect()->to('/show/3'); -> te redirije a la ruta que le indicas
//return redirect()->route('show') -> te redirije a la ruta que tiene el nombre asignado en el name.
//return redirect()->route('show',['id' => '222']) -> en caso de pasarle algun parámetro
} )->where(['number' => '[\d]+']); // de esta forma añadimos una expresion regular para que solo puedan introducir numeros
Route::get('user/{name?}', function ($name = 'John') { //$name=null
return $name;
});
Restricciones con Expresiones Regulares
Route::get('user/{name}', function ($name) {
//
})->where('name', '[A-Za-z]+'); //nomes poden passar lletres miníscules o Majúscules como mínim una volta
Route::get('user/{id}', function ($id) {
//
})->where('id', '[0-9]+');
Route::get('user/{id}/{name}', function ($id, $name) {
//
})->where(['id' => '[0-9]+', 'name' => '[a-z]+']); //le pasamos un array en caso de más de un elemento.
Route::group(['prefix'=>'admin'],function(){
Route::get('modificar-usuario',function(){
return "modifica usuario";
});
Route::get('insertar-usuario',function(){
return "insertar usuario";
});
});