MIGRACIONES EN LARAVEL


A medida que crea su aplicación, puede acumular más y más migraciones a lo largo del tiempo. Esto puede hacer que su directorio de migración se infle con potencialmente cientos de migraciones. Si lo desea, puede «aplastar» sus migraciones en un solo archivo SQL. Para comenzar, ejecute el comando schema: dump:

esquema artesanal php: volcado

// Volcar el esquema de la base de datos actual y eliminar todas las migraciones existentes …
esquema artesanal de php: dump –prune

Son ideales para trabajar en equipo, dado que elimina la necesidad de enviar fragmentos de SQL a través de email, mensajería, etc. Los programadores simplemente necesitan generar una nueva migración, escribir los cambios a la base de datos en ella y el resto del equipo puede simplemente ejecutar la migración.

ESTRUCTURA DE MIGRACION

Una clase de migración contiene dos métodos: hacia arriba y hacia abajo. El método up se usa para agregar nuevas tablas, columnas o índices a su base de datos, mientras que el método down debe revertir las operaciones realizadas por el método up.

Dentro de estos dos métodos, puede utilizar el generador de esquemas de Laravel para crear y modificar tablas de forma expresiva. Para conocer todos los métodos disponibles en el generador de esquemas, consulte su documentación. Por ejemplo, la siguiente migración crea una tabla de vuelos:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateFlightsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('flights', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('airline');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('flights');
    }
}

Modificar tablas existentes

A veces, necesita cambiar su estructura de tabla existente como renaming/deleting columnas. Lo que puede lograr creando una nueva migración. Y en el método up de su migración.

//Renaming Column.

public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->renameColumn('email', 'username');
    });
}

El ejemplo anterior cambiará el nombre de la email column de email column de la users table de users table a username de username . Mientras que el siguiente código elimina un username de username columna de la tabla de users .

IMPROTANTE: para modificar columnas, debe agregar la dependencia doctrine/dbal al archivo composer.json del proyecto y ejecutar la composer update para reflejar los cambios.

//Droping Column
public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->dropColumn('username');
    });
}
LOS ARCHIVOS DE MIGRACION

Las migraciones en una aplicación Laravel viven en el directorio database/migrations . Sus nombres de archivos se ajustan a un formato particular:

<year>_<month>_<day>_<hour><minute><second>_<name>.php

Un archivo de migración debe representar una actualización de esquema para resolver un problema particular. Por ejemplo:

2016_07_21_134310_add_last_logged_in_to_users_table.php

Las migraciones de la base de datos se mantienen en orden cronológico para que Laravel sepa en qué orden ejecutarlas. Laravel siempre ejecutará migraciones de la más antigua a la más nueva.

Generando archivos de migración

Crear un nuevo archivo de migración con el nombre de archivo correcto cada vez que necesite cambiar su esquema sería una tarea. Afortunadamente, el comando artisan de Laravel puede generar la migración para usted:

php artisan make:migration add_last_logged_in_to_users_table

También puede usar los --table y --create con el comando anterior. Estos son opcionales y solo por conveniencia, e insertarán el código relevante en el archivo de migración.

php artisan make:migration add_last_logged_in_to_users_table --table=users

php artisan make:migration create_logs_table --create=logs

Puede especificar una ruta de salida personalizada para la migración generada usando la opción --path . La ruta es relativa a la ruta base de la aplicación.

php artisan make:migration --path=app/Modules/User/Migrations

EJECUTANDO MIGRACIONES

Una vez que se haya escrito su migración, la ejecución aplicará las operaciones a su base de datos.

php artisan migrate

Si todo salió bien, verás una salida similar a la siguiente:

Migrated: 2016_07_21_134310_add_last_logged_in_to_users_table

Laravel es lo suficientemente inteligente como para saber cuándo está ejecutando migraciones en el entorno de producción. Si detecta que está realizando una migración destructiva (por ejemplo, una que elimina una columna de una tabla), el comando de php artisan migrate le pedirá confirmación. En entornos de entrega continua esto puede no ser deseado. En ese caso, use la bandera --force para omitir la confirmación:

php artisan migrate --force

Si acaba de ejecutar migraciones, puede confundirse al ver la presencia de una tabla de migrations en su base de datos. Esta tabla es lo que utiliza Laravel para realizar un seguimiento de las migraciones que ya se han ejecutado. Al emitir el comando migrate , Laravel determinará qué migraciones aún deben ejecutarse, las ejecutará en orden cronológico y luego actualizará la tabla de migrations para que se adapte.

Nunca debe editar manualmente la tabla de migrations menos que sepa absolutamente lo que está haciendo. Es muy fácil dejar inadvertidamente su base de datos en un estado defectuoso en el que las migraciones fallarán.

Protección CSRF en Laravel

Protección CSRF de Laravel | XperimentalHamid


Laravel facilita la protección de su aplicación de los ataques de falsificación de solicitudes entre sitios (CSRF).

Las falsificaciones de solicitudes entre sitios son un tipo de exploit malicioso mediante el cual se ejecutan comandos no autorizados en nombre de un usuario autenticado.

Lo que hace Laravel es generar automáticamente un «token» CSRF para cada sesión de usuario activa, manejada por la aplicación.

Este token es usado para verificar que el usuario autenticado es quien en realidad está haciendo la petición a la aplicación.

En cualquier momento que definas un formulario HTML en tu aplicación, debes incluir un campo de token CSRF en el formulario con el propósito de que el middleware para protección CSRF pueda validar la solicitud.

Puedes usar la directiva de Blade @csrf para generar el campo de token:PHP

123456 <form method=»POST» action=»/profile»>    @csrf    …</form> 

El middleware VerifyCsrfToken, el cual es incluido en el grupo de middleware web, verificará automáticamente que el token en el campo de la solicitud coincida con el almacenado en la sesión.


Tokens CSRF y JavaScript

Al crear aplicaciones basadas en JavaScript, es conveniente que su biblioteca HTTP de JavaScript adjunte automáticamente el token CSRF a cada solicitud saliente.

De forma predeterminada, la biblioteca HTTP de Axios proporcionada en el archivo resources / js / bootstrap.js envía automáticamente un encabezado X-XSRF-TOKEN utilizando el valor de la cookie XSRF-TOKEN cifrada.

Si no está utilizando esta biblioteca, deberá configurar manualmente este comportamiento para su aplicación.


X-XSRF-TOKEN

Laravel almacena el token CSRF actual en una cookie XSRF-TOKEN cifrada que se incluye con cada respuesta generada por el marco. Puede usar el valor de la cookie para configurar el encabezado de solicitud X-XSRF-TOKEN.

Esta cookie se envía principalmente como una conveniencia, ya que algunos marcos y bibliotecas de JavaScript, como Angular y Axios, colocan automáticamente su valor en el encabezado X-XSRF-TOKEN en solicitudes del mismo origen.

Instalar Laravel en tu Mac sin servidores locales como LAMPP o XAMPP

De seguro ya estas cansado de servidores locales como XAMPP, LAMPP y parecidos, si quieres Laravel en tu Mac para hacer tus deploys sin historias, has elegido la plataforma correcta.

lo primero que vamos a necesitar es que instales MySQL en tu Mac.

  • Descárgate MySQL Server para MacOS en este enlace.
  • Ejecuta el archivo dmg que se ha descargado para que empiece la instalación.
  • Sigue el proceso de instalación, te pedirá, entre otras cosas la contraseña como root. Guárdatela.
Instalar MySQL en Mac

Luego te recomendamos instalar Workbench aunque vale cualquier cliente de base de datos como HeidiSQL o Dbeaver.

La instalación de esta herramienta es muy sencilla, tan solo debes descarga y ejecuta el archivo dmg.

Cuando ya tengas tu cliente, crea una base de datos y un usuario para esta. lo siguiente es instalar PHP.  Es sencillo, abre la Terminal y pon el siguiente comando:

curl -s http://php-osx.liip.ch/install.sh | bash -s 7.3

Si no deseas la versión 7.3, puedes cambiar el último parámetro por la versión que quieras. Por ejemplo: 7.2, 7.1 o 5.6. Si quieres Laravel 6, mejor que sea la 7.3.

luego verifica si el PHP está instalado correctamente vamos a ejecutar el siguiente comando:

export PATH=/usr/local/php5/bin:$PATH
php -v

Este último comando te dirá si está PHP y qué versión.

Ahora ya sólo queda instalar Laravel, y para ello, suelo utilizar Composer. Para instalar Composer sólo tienes que teclear los siguientes comandos en tu Terminal:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

Bueno ahora ya tenemos Composer, solo nos queda instalar Laravel. y para ello vamos a utilizar el siguiente comando.

php composer.phar  create-project --prefer-dist laravel/laravel=6.0 NOMBRE_DEL_PROYECTO

Donde 6.0 es la versión de Laravel a instalar y NOMBRE_DEL_PROYECTO el nombre que quieres poner.

Para poder arrancar Laravel tienes que, desde la Terminal, entrar al proyecto y ejecutar:

php artisan serve

date cuenta que entres a http://127.0.0.1:8000 desde tu navegador para que veas Laravel funcionando.

Laravel funcionando en local

Ciclo de vida de aplicación en Laravel

Cuando usamos cualquier herramienta en el «mundo real», se siente más seguro si comprende cómo funciona esa herramienta. El desarrollo de aplicaciones no es diferente. Cuando comprenda cómo funcionan sus herramientas de desarrollo, se sentirá más cómodo y seguro al usarlas.

El objetivo de este articulo es brindarle una buena descripción general del alto nivel de cómo funciona el marco de Laravel.

Al conocer mejor el marco general, todo se siente menos «mágico» y tendrá más confianza en la construcción de sus aplicaciones. Si no comprende todos los términos de inmediato, no te preocupes Solo intente obtener una comprensión básica de lo que está sucediendo, y su conocimiento crecerá a medida que explore otras secciones de la documentación.

El punto de entrada para todas las solicitudes a una aplicación de Laravel es el archivo public / index.php. Todas las solicitudes son dirigidas a este archivo por la configuración de su servidor web (Apache / Nginx). El archivo index.php no contiene mucho código. Más bien, es un punto de partida para cargar el resto del marco.

El archivo index.php carga la definición de autocargador generada por Composer y luego recupera una instancia de la aplicación Laravel del script bootstrap / app.php. La primera acción realizada por Laravel es crear una instancia del contenedor de la aplicación / servicio.

A continuación, la solicitud entrante se envía al kernel HTTP o al kernel de la consola, según el tipo de solicitud que ingresa a la aplicación. Estos dos núcleos sirven como la ubicación central por donde fluyen todas las solicitudes. Por ahora, centrémonos en el kernel HTTP, que se encuentra en app / Http / Kernel.php.

El kernel HTTP extiende la clase Illuminate \ Foundation \ Http \ Kernel, que define una matriz de bootstrappers que se ejecutarán antes de que se ejecute la solicitud. Estos bootstrappers configuran el manejo de errores, configuran el registro, detectan el entorno de la aplicación y realizan otras tareas que deben realizarse antes de que la solicitud se maneje realmente.

El kernel HTTP también define una lista de middleware HTTP por el que deben pasar todas las solicitudes antes de ser manejadas por la aplicación. Estos middleware manejan la lectura y escritura de la sesión HTTP, determinando si la aplicación está en modo de mantenimiento, verificando el token CSRF y más.

La firma del método para el método handle del kernel HTTP es bastante simple: recibe una solicitud y devuelve una respuesta. Piense en el Kernel como una gran caja negra que representa toda su aplicación. Aliméntelo con solicitudes HTTP y devolverá respuestas HTTP.

Proveedores de servicio
Una de las acciones de arranque del kernel más importantes es cargar los proveedores de servicios para su aplicación. Todos los proveedores de servicios para la aplicación están configurados en la matriz de proveedores del archivo de configuración config / app.php. Primero, se llamará al método de registro en todos los proveedores, luego, una vez que se hayan registrado todos los proveedores, se llamará al método de arranque.

Los proveedores de servicios son responsables de arrancar todos los componentes del marco, como la base de datos, la cola, la validación y los componentes de enrutamiento. Dado que arrancan y configuran todas las funciones que ofrece el marco, los proveedores de servicios son el aspecto más importante de todo el proceso de arranque de Laravel.

Solicitud de envío
Una vez que se ha iniciado la aplicación y se han registrado todos los proveedores de servicios, la solicitud se entregará al enrutador para su envío. El enrutador enviará la solicitud a una ruta o controlador, así como ejecutará cualquier middleware específico de ruta.

Centrarse en los proveedores de servicios
Los proveedores de servicios son realmente la clave para iniciar una aplicación Laravel. Se crea la instancia de la aplicación, se registran los proveedores de servicios y se entrega la solicitud a la aplicación de arranque. ¡Es realmente así de simple!

Tener un conocimiento firme de cómo se construye y arranca una aplicación de Laravel a través de proveedores de servicios es muy valioso. Los proveedores de servicios predeterminados de su aplicación se almacenan en el directorio de proveedores / aplicaciones.

De forma predeterminada, AppServiceProvider está bastante vacío. Este proveedor es un gran lugar para agregar los enlaces de contenedores de servicio y arranque de su propia aplicación. Para aplicaciones grandes, es posible que desee crear varios proveedores de servicios, cada uno con un tipo de arranque más granular.

Middlewares en Laravel

En este presente artículo vamos a ver qué es y como crear middlewares para nuestra aplicación Laravel.

veremos un uso muy útil de éstos, como puede ser el control de nuestras rutas cuando se encuentre en mantenimiento nuestra página.

¿Pero Qué son los middleware en laravel?

Un middleware en laravel es una clase que funciona como filtro en las rutas, es decir, podemos añadirle a nuestra ruta o grupo de rutas.

un middelware para restringir por ejemplo el acceso a éstas si un usuario no está autentificado en nuestra aplicación, como podrían ser las rutas donde el administrador gestiona su aplicación laravel.

El middleware más conocido y utilizado en laravel es uno de los que ya vienen creado por defecto, que es el middleware authenticate, que controla si un usuario esta logeado en nuestra aplicación.

Si añadiesemos el middleware de autenticación en nuestras rutas y el middleware comprobase que el usuario no esta autenticado lo redireccionaría por defecto a la ruta de login.

¿Como crear nuestro middelware en Laravel?

Para este ejemplo vamos a crear un middelware que comprobará si nuestra aplicación esta en modo mantenimiento.

de ser así redireccionaría al usuario a la vista donde aparecerá el mensaje de mantenimiento que crearemos más adelante.

Ahora crearemos nuestro middelware, que llamaremos «Maintenance», con el siguiente comando en nuestra consola:

php artisan make:middleware Maintenance

Una vez ejecutado este comando, lo encontraremos en la carpeta Middleware que se encuentra en la ruta  app/http/Middleware con el nombre de Maintenance.php. 

Ahora vamos a registrar el middleware en nuestra aplicación, para ello iremos a Kernel.php que se encuentra en la carpeta App/Http y nos dirijimos abajo del todo y añadimos en el array $routeMiddelware nuestro nuevo middelware:

protected $routeMiddleware = [
   ...
   ...
   'maintenance' => \App\Http\Middleware\Maintenance::class,

Ahora vamos a crear una nueva tabla en nuestra base de datos que será la encargada de guardar nuestra configuración de la aplicacion, como el mantenimiento de la página:

public function up()
{
   Schema::create('configurations', function (Blueprint $table) {
     $table->increments('id');
     $table->string('name');
     $table->boolean('state');
     $table->timestamps();
    });
}

guardaremos en nuestra tabla algo así, donde la columna state será el estado del mantenimiento (1 En mantenimiento, 0 No está en mantenimiento):

middelware laravel

Una vez hecho esto, iremos a nuestro middleware app/http/Middleware y añadiremos este código:

<?php

namespace App\Http\Middleware;
use Illuminate\Support\Facades\Auth;
use Closure;
use App\Configuration; //Recordar el modelo configuration para poder llamar a nuestra tabla

class Maintenance
 {
 /**
 * Handle an incoming request.
 *
 * @param \Illuminate\Http\Request $request
 * @param \Closure $next
 * @return mixed
 */
  public function handle($request, Closure $next)
   {
     if(Configuration::where(name, "mantenimiento")->state && !Auth::check()){
        return redirect('/mantenimiento');
      }
     return $next($request);
   }
 }

En la función handle añadimos la siguiente condición: «Si nuestra página está en modo mantenimiento y no estamos logeados, redirecciona a la ruta de mantenimiento».

Añadimos la comprobación de auth:check para comprobar si estamos logeados,en este caso damos por hecho que  solo el administrador puede logearse, si cualquier usuario pudiese registrarse a nuestra página entonces deberiamos cambiar esta condición y añadir si el usuario que esta logeado no es administrador.

Ahora iremos a nuestro archivo web.php que es donde se administran nuestra rutas y añadiremos nuestro middleware:

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

/*Todas las rutas que esten en este grupo estaran restringidas si nuestro aplicacion esta
en mantenimiento y se restringira su paso si la pagina esta en mantenimiento.*/

 Route::get('/', function () {
   return view('welcome');
 });
 Route::get('/sobre-nosotros', function () {
   return view('about');
 });
 Route::get('/contactar', function () {
   return view('contact');
 });
});

//esta es la ruta a la que redireccinaremos si esta en mantenimiento, habría que crear la vista maintenance o como quieras llamarla.

 Route::get('/mantenimiento', function () {
   return view('maintenance');
 });

Después de esto, solo quedaría crear una vista que mostrase un mensaje tipo : «Esta página esta en mantenimiento, vuelve pronto».

De esta forma ya tendriamos nuestro middelware listo.

¿Qué es CRUD?

Es un acrónimo para las maneras en las que se puede operar sobre información almacenada. usualmente se refiere a operaciones llevadas a cabo en una base de datos o un almacén de datos,  también pude aplicar a funciones de un nivel superior de una aplicación como soft donde la información no es realmente eliminada, sino es marcada como eliminada a tráves de un estatus.

CRUD hace referencia a las cuatro operaciones fundamentales de aplicaciones persistentes en sistemas de bases de datos:

  • Create: (Crear registros)
  • Read: Retrieve (Leer registros)
  • Update: (Actualizar registros)
  • Delete: Destroy (Borrar registros)

CRUD resume las funciones requeridas por un usuario para crear y gestionar datos, dichas operaciones están específicamente adaptadas a los requisitos del sistema y de usuario ya sea para la gestión de bases de datos o para el uso de aplicaciones.

Dependiendo de la configuración regional, las operaciones CRUD pueden implementarse de diferentes maneras, como lo muestra la siguiente tabla:

CRUD-OperationSQLRESTful HTTPXQuery
CreateINSERTPOST, PUTinsert
ReadSELECTGET, HEADcopy/modify/return
UpdateUPDATEPUT, PATCHreplace, rename
DeleteDELETEDELETEdelete

Frameworks CRUD: capa de acceso a las bases de datos

CRUD demanda varios pasos de transacción, de forma que los datos no se recogen una vez se han introducido, sino que es necesario pulsar la opción “Guardar” o “Continuar”. 

 framework CRUD pueden aplazarse para ser ejecutadas en diferentes plazos este hecho resulta de gran importancia para sistemas multiusuario, pues permite que varias personas lean los mismos datos al mismo tiempo.

Existen numerosos frameworks con un concepto CRUD basados en diferentes lenguajes y plataformas. A continuación, presentamos algunos ejemplos:

Lenguaje o plataformaFramework
JavaSpring, JDBC (The Java Database Connectivity), Hibernate, JBoss Seam, Isis
PHPLaravel, Yii, CakePHP, Zikula, Symfony, TYPO3 Flow
PerlCatalyst, Gantry
PythonDjango, SQLAlchemy, web2py
GroovyGrails
.NETNHibernate, ADO.NET/Entity Framework
RubyRuby on Rails
JavaScriptBackbone.js, Angular

Cómo desarrollar un CRUD PHP grid para tu base de datos.

En este momento te vamos a enseñar cómo crear una interfaz de arranque para MySQL, el sistema de base de datos más utilizado, que permita el acceso a través operaciones CRUD.

Para manipular la base de datos se utiliza, en este caso, el lenguaje de script del lado del servidor PHP y la extensión PHP Data Objects (PDO).

1. El primer paso consiste en crear una tabla de base de datos simple que pueda ser manipulada con operaciones CRUD a lo largo de este tutorial. Para ello, importa la siguiente tabla de ejemplo en tu base de datos MySQL:

CREATE TABLE `customers` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 100 ) NOT NULL ,
`email` VARCHAR( 100 ) NOT NULL ,
`mobile` VARCHAR( 100 ) NOT NULL
) ENGINE = INNODB;

La tabla se utiliza para recopilar información del usuario como nombre, correo electrónico y número de teléfono.

A cada entrada se le asigna automáticamente una clave principal (AUTO_INCREMENT PRIMARY KEY), es decir un identificador único.

en el siguiente paso vamos a  regular las conexiones de apertura y de cierre de la base de datos. 

Luego crea un archivo PHP con el nombre database.php y añade la siguiente secuencia de comandos con la clase “Database” para gestionar las conexiones de la base de datos.

<?php
class Database 
{
private static $dbName = 'nombre_de_la_basededatos'; 
private static $dbHost = 'localhost';
private static $dbUsername = 'nombre_de_usuario';
private static $dbUserPassword = 'contraseña';

private static $cont = null;

public function __construct() {
die('Init-Función no permitida');
}

public static function connect() {
// Permitir solo una conexión para la totalidad del acceso
if ( null == self::$cont )
{
  try
  {
    self::$cont = new PDO( "mysql:host=".self::$dbHost.";"."dbname=".self::$dbName, self::$dbUsername, self::$dbUserPassword);
  }
  catch(PDOException $e)
  {
    die($e->getMessage());
  }
} 
return self::$cont;
}

public static function disconnect()
{
self::$cont = null;
}
}

debemos tomar en cuenta que para formar la estructura esencial, es necesario concentrarse en la realización de las diferentes operaciones CRUD. 

Enseguida vamos a poner en marcha la operación create en la que  se necesita otra página HTML con campos de formulario para introducir los datos de usuario vinculados en index.php y a los que se puede acceder a través de un botón en la interfaz Bootstrap.

Para mayor comodidad se recomienda comenzar con la creación de este botón, abriendo index.php y añadiendo el siguiente fragmento de código al elemento <div class=»row»> de la tabla:

<p>
  <a href="create.php" class="btn btn-success">Create</a>
</p>

En el fragmento de código puedes ver que los datos se están vinculando al archivo create.php, aunque este todavía no exista.

Al realizar una prueba del grid de Bootstrap, esta muestra que hay un botón pero, al hacer clic sobre él, este dirige a una página de error.

Para finalizar y hacer válida la operación create debes crear el archivo create.php y añadir el siguiente código:

<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<link href="css/bootstrap.min.css" rel="stylesheet">
</head>

<body>
<div class="container">

<div class="span10 offset1">
<div class="row">
<h3>Create a Customer</h3>
</div>

<form class="form-horizontal" action="create.php" method="post">
<div class="form-group <?php echo !empty($nameError)?'has-error':'';?>">
<label class="control-label">Name</label>
<div class="controls">
<input name="name" type="text" placeholder="Nombre" value="<?php echo !empty($name)?$name:'';?>">
<?php if (!empty($nameError)): ?>
<span class="help-inline"><?php echo   $nameError;?></span>
<?php endif; ?>
</div>
</div>
<div class="form-group <?php echo !empty($emailError)?'has-error':'';?>">
<label class="control-label">E-Mail-Adresse</label>
<div class="controls">
<input name="email" type="text" placeholder="Correo Electrónico" value="<?php echo !empty($email)?$email:'';?>">
<?php if (!empty($emailError)): ?>
<span class="help-inline"><?php echo   $emailError;?></span>
<?php endif;?>
</div>
</div>
<div class="form-group <?php echo !empty($mobileError)?'has-error':'';?>">
<label class="control-label">Móvil</label>
<div class="controls">
<input name="mobile" type="text" placeholder="Mobilnummer" value="<?php echo !empty($mobile)?$mobile:'';?>">
<?php if (!empty($mobileError)): ?>
<span class="help-inline"><?php echo $mobileError;?></span>
<?php endif;?>
</div>
</div>
<div class="form-actions">
<button type="submit" class="btn btn-success">Create</button>
<a class="btn" href="index.php">Back</a>
</div>
</form>
</div>

</div> <!-- /container -->
</body>
</html>

El código genera el formulario HTML que permite personalizar la información en los campos nombre, correo electrónico y móvil.

Para cada casilla se crea una variable PHP que, en combinación con el fragmento de código que presentamos a continuación. genera mensajes de error cuando no se realiza ninguna entrada en el campo correspondiente:

<?php 

require 'database.php';

if ( !empty($_POST)) {
// Detectar errores de validación 
$nameError = null;
$emailError = null;
$mobileError = null;

// Capturar valores de entrada
$name = $_POST['name'];
$email = $_POST['email'];
$mobile = $_POST['mobile'];

// Validar entrada
$valid = true;
if (empty($name)) {
$nameError = Por favor, introduce tu nombre';
$valid = false;
}

if (empty($email)) {
$emailError = 'Por favor, introduce una dirección de correo electrónico';
$valid = false;
} else if ( !filter_var($email,FILTER_VALIDATE_EMAIL) ) {
$emailError = 'Por favor, introduce una dirección de correo electrónico';
$valid = false;
}

if (empty($mobile)) {
$mobileError = 'Por favor, introduce tu número de móvil';
$valid = false;
}

// Daten eingeben
if ($valid) {
     $pdo = Database::connect();
     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     $sql = "INSERT INTO customers (name,email,mobile) values(?, ?, ?)";
     $q = $pdo->prepare($sql);
     $q->execute(array($name,$email,$mobile));
     Database::disconnect();
     header("Location: index.php");
}
      }
?>

de esta forma emos logrado crear una página create.php a la que se accede haciendo clic en el botón crear y que permite al usuario introducir su información.

¿Qué es el formato de imágenes SVG y para que sirve?

Gráficos vectoriales escalables - Wikipedia, la enciclopedia libre

Algunas vez te ha ocurrido que cuando deseas ampliar una imagen se ha “pixelado” se ha perdido la definición al intentar aumentar su tamaño. Esto ocurre con las imágenes estándar (mapa de bits), como los archivos .jpg, .png, .gif, etc. Pero no con las imágenes vectoriales.  A diferencia, de los mapas de bits, las imágenes vectoriales pueden ser redimensionada al tamaño que deseas sin perder calidad de imagen.

Una de las ventaja que tienen este tipo de imágenes es que tienen un tamaño menor a diferencias de las estándar. por ellos las personas que se dedican a elaborar vallas publicitarias la utilizan ya que les brinda mejoras en su trabajos realizados.

vamos a definir que es una imagen SVG (Scalable Vector Graphics), son Gráficos Vectoriales Redimensionables, es un formato de gráficos vectoriales bidimensionales, tanto estáticos como animados, en formato XML. Este tipo de formato se convirtió en una recomendación del W3C en septiembre de 2001 con el que todos los navegadores fueron renovándose para poder soportar este formato. este formato son escasos las personas que lo utilizan, pero es muy útil, por ejemplo, en entornos web. La mayoría de la gente utiliza archivos de mapas de bits como JPG. O PNG y GIF si se necesita un fondo transparente o una imagen animada.

El formato SVG (Scalable Vector Graphics) es equivalente al que se utiliza en los populares programas como Adobe Illustrator o Corel Draw. En segundo lugar, es un estándar abierto y compatible. El formato Flash, que también es vectorial, era propiedad de Macromedia y, después de la absorción, era propiedad de Adobe, con los quebraderos de cabeza que ha ocasionado en los usuarios de Apple.

 Al principio, no se podía usar en todos los navegadores pero actualmente todos los navegadores lo soportan: Google Chrome, Firefox, Safari… No obstante, al ser un formato basado en XML hay que tener nociones de escritura de código para hacer que funcione adecuadamente allí donde lo usemos. En tercer lugar, los archivos SVG permiten utilizar las tipografías (tipos de letra) con trazados y también permite incluirlas dentro del propio archivo en formato TrueType y Tipo 1. Esto ofrece una gran capacidad para que los motores de búsqueda sean capaces de indexarlo; con lo que ello significa para mejorar el SEO (Search Engine Optimization).

como cuarto punto tenemos que los archivos SVG soportan estilos CSS, de tal manera que si cambiamos el estilo de nuestra web también se cambiará dentro del archivo. Por último, ayudan en el diseño responsive, es decir, facilitan el diseño de web apps que se adapten a cualquier pantalla, ya sea de un ordenador, de una tablet o de un smartphone.

Así pues, este formato vectorial además de ofrecer ventajas para el diseño gráfico en general, ofrece muchas oportunidades para los entornos digitales como las web apps de una marca. Si se está realizando una campaña de marketing digital y se quiere diseñar los diferentes gráficos que formaran parte de una web, este es el formato óptimo a utlizar para la elaboración de la misma.

Cómo instalar Laravel 7.10 en windows 10 con composer

Antes de comenzar con la instalacio de Laravel te vamos a decir que es, y para que sirve:

Laravel es un Framework de código abierto muy utilizado por desarrolladores web en PHP 5 y PHP 7, ideal para crear aplicaciones web modernas y seguras con autenticación de usuarios, también tiene caracteristicas elocuent que es el soporte para bases de datos, Laravel MVC como patrón de diseño, ademas cuenta con laravel layout template que es un motor de plantillas o layouts con directivas laravel Blade, entre otras mas.

requisitos previos a la instalación de Laravel

– Tener instalado XAMPP como servidor local en la PC.

Xampp contiene los servicios PHP y MYSQL básicos que necesita Laravel para poder trabajar.

Instalación de Composer

em primer lugar lo qu vamos hacer es descargar el instalador de COMPOSER utilizado por Laravel como el administrador de dependencias para PHP, el mismo que servirá para los proyecto a futuro que se quiera realizar.

debemos descargar el archivo que se pueda instalar para Windows en la version actual para que no tengamos inconveniente con el proyecto a realizar

Descargar composer paso2

lo siguiente que vamos hacer es ejecutarlo como administrador

Descomprimir Composer

luego aparecerá en la parte inferior derecha la palabra «next», damos clic y continuamos

Instalar composer paso1

luego pedirá que le indiquemos la ruta del php.exe que corresponde al servidor web local XAMPP de nuestro equipo. seguidamente damos clic en «next»

Instalar composer paso2

seguimos dando «next»

Instalar composer paso3

por ultimo damos clic en instalar y esperamos que finalice

Instalar composer paso4
Instalar composer paso6

ahora vamos a verificar si esta instalado correctamente, damos clic en WINDOWS + R, ingresar CMD y dar clic en aceptar, ya dentro de la consola ingresar cualquiera de los dos comandos siguientes y dar enter.

Composer instalado
la versión de composer puede variar dependiendo la fecha que lo instales

Instalación de Laravel: Lo que sigue ahora es descargar el Framework Laravel en el lugar que indiquemos haciendo uso de Composer.

para poder ingresar desde la consola vamos a utilizar el comando cd desktop, la misma que la ejecutaremos de la siguiente manera:

C:\Users\tu-nombre-usuario-pc>cd desktop

una vez que hemos ingresado al escritorio debemos ingresar el siguiente comando que realizará la descarga.

C:\Users\tu-nombre-usuario-pc\Desktop>composer create-project --prefer-dist la

 final de la línea hemos indicado el nombre del proyecto como blog. recuerda que puedes ponerle el nombre que deseas.

luego lo que vamos hacer es dar enter y esperamos unos segundos mientras se descargan los archivos del framework en su última versión.

Descargar laravel

una vez finalizada la descarga debemos tener una carpeta con todos los archivos descargados.

Para ejecutar el servidor y ver en funcionamiento Laravel, debemos ingresar a la carpeta del proyecto blog siempre desde línea de comandos.

C:\Users\tu-nombre-usuario-pc\Desktop>cd blog

una vez que hayas ingresado entra en el siguiente comando y dar enter:

C:\Users\tu-nombre-usuario-pc\Desktop\blog>php artisan serve

ahora nos debe mostrar el siguiente mensaje que ya se esta ejecutando.

Ejecutar laravel

Ahora cargamos el navegador preferido e ingresar en la url lo siguiente http://127.0.0.1:8000

Laravel ejecutado

Para detener la ejecución del servidor utilizar la combinación de teclas control +c

De esta forma comprobamos que Laravel ya esta funcionando el la PC.

Para instalar en la raiz de XAMPP

otra forma de descargar  framework Laravel directamente en la carpeta raiz htdoscs del servidor local XAMPP.

Para entrar al htdocs:

C:\>cd xampp/htdocs

NoneCopy

Seguidamente para descargar el framework.

C:xampp\htdocs>composer create-project --prefer-dist laravel/laravel blog

para ejecutar nuevamente el proyecto vamos a utilizar el siguiente comando :

C:xampp\htdocs\pruebalaravel>php artisan serve

para verificar la instalación usamos el siguiente comando:

C:\xampp\htdocs\pruebalaravel>php artisan --version

Finalmente ya tenemos listo el Framework para crear proyectos PHP en Laravel.

¿Qué es Laravel?

Aquí llegamos a Laravel, el “framework PHP para artesanos” según dicta su slogan. Laravel es un framework PHP de código abierto que intenta aprovechar las ventajas de otros Frameworks y desarrollar con las últimas versiones de PHP (entre otras muchas cosas que aporta como framework).

Laravel, ¿qué es?

Su filosofía es desarrollar código PHP de forma elegante y simple basado en un modelo MVC(Modelo-Vista-Controlador).

En su web https://laravel.com/ encontraremos una extensa y organizada documentación que hará mucho más fácil y efectiva la labor de los desarrolladores. Este framework está en constante mantenimiento y expansión por parte de sus desarrolladores lo que asegura la continuidad y seguridad del framework con actualizaciones regulares.

¿Cómo funciona Laravel? Algunas de las características:

En esta sección, nos centraremos más en el apartado técnico de Laravel y en las ventajas que nos aporta a la hora de desarrollar aplicaciones web.

Las características más notables que aporta Laravel son las siguientes:

  • Blade:  Blade es un sistema de plantillas para crear vistas en Laravel. Este permite extender plantillas creadas y secciones en otras vistas en las cuales también tendremos accesibles las variables y con posibilidad de utilizar código PHP en ellas, además,  ligado al uso de bootstrap u otro famework HTML generará resultados optimizados a los diferentes dispositivos (Móviles, Tablets, PC’s, etc..).

¿Por qué elegir Laravel?

La potencia de Laravel radica en su integración, escalabilidad y facilidad de mantenimiento respecto a otros desarrollos en lenguajes 100% nativos y por lo tanto es una opción más que a tener en cuenta a la hora de decidir usar este framework en nuestros desarrollos.

¿Cuándo utilizar Laravel? (tres puntos a destacar)

Como comentamos antes, la clave son las necesidades, por lo que elegiremos Laravel para desarrollos a medida cuando:

  • Los CMS no cubren nuestras necesidades como aplicación web.
  • Necesitamos de un desarrollo a medida ágil, seguro y con una fácil escalabilidad y mantenimiento.
  • Si además de necesitar una solución web, esta tiene que estar integrada con otras aplicaciones (Google, servicios de mailing, ERP’s, etc.).

Llegados a este punto, y tras todo lo comentado, solo nos queda reafirmar que Laravel y el desarrollo con Frameworks está cogiendo cada vez más fuerza ya que ofrecen soluciones asequibles para pequeñas empresas sin necesidad de embarcarte en grandes proyectos faraónicos.

TE INVITAMOS A USARLO!

¿Quién es Brendan Eich?

Brendan Eich es un programador estadounidense conocido por inventar el lenguaje de programación JavaScript.

Biografía

Brendan Eich recibió su Bachiller en matemáticas y ciencias de la computación en la Universidad de Santa Clara. Recibió su maestría en 1986 de la Universidad de Illinois en Urbana-Champaign.

Eich comenzó su carrera en Silicon Graphics, trabajando por siete años en el sistema operativo y código de la red. Luego trabajó por tres años en MicroUnity Systems Engineering escribiendo el micronúcleo y el código de DSP, y en hacer el primer port de GCC para la MIPS R4000.

Tras trabajar en Silicon Graphics, pasó por varias empresas hasta llegar a Netscape Communications Corporation en abril de 1995, trabajando en el desarrollo del lenguaje JavaScript (originalmente llamado Mocha, luego denominado LiveScript) para el navegador web Netscape Navigator. A principios de 1998 ayudó a fundar la Fundación Mozilla, sirviendo como principal arquitecto. Cuando AOL cerró la unidad del navegador Netscape en julio de 2003, Eich ayudó a hacer girar a la Fundación Mozilla.

El 24 de marzo de 2014 Eich fue ascendido a CEO de la Corporación Mozilla.​ Gary Kovacs, John Lilly y Ellen Siminoff dimitieron de la junta directiva de Mozilla por la elección,​ expresando desacuerdos con la estrategia de Eich y su deseo de tener un CEO con experiencia en la industria del móvil.​

Algunos empleados de la Fundación Mozilla (una organización separada de la Corporación) tuitearon que debía dimitir, haciendo referencia a las donaciones de Eich por valor de 1000 dólares estadounidenses a la Proposición 8 de California, que prohibía el matrimonio entre personas del mismo sexo,​ antes de ser derogada en 2013, cuando fue declarada inconstitucional y pudieron reanudarse los casamientos.​

Eich se reafirmó en su decisión de financiar la campaña, pero escribió en su blog que lamentaba haber «causado daño» y se comprometía a promover la igualdad en Mozilla.​ El sitio de citas en línea OkCupid automáticamente reprodujo un mensaje a las personas usuarias de Firefox con información sobre la donación de Eich y sugería que utilizaran otro navegador (aunque les permitía continuar con Firefox si así lo deseaban).​

El 3 de abril de 2014 Eich dimitió como CEO de Mozilla y abandonó la organización, citando su incapacidad para «ser un líder efectivo en las presentes circunstancias».​ Desde finales de 2015 es el CEO de Brave Software.