PHP

Plantillas Laravel, cómo detectar dispositivos móviles y ordenadores

Laravel es un framework de php que a lo largo de los últimos años se ha vuelto demasiado práctico y en cuestiones de trabajo, es preferible usarlo para proyectos rápidos pues facilita el desarrollo.

El hecho de no querer mostrar algo en un móvil o viceversa en ocasiones puede resultar útil. Digamos, por ejemplo, que tenemos un código de algún widget y este requiere bastantes recursos, y lo que buscamos es optimizar la velocidad en móviles, podríamos simplemente desactivarlo con una condición en la plantilla blade. Así pues, vamos al grano.

Lo primero será abrir nuestro archivo AppServiceProvider.php que se ubica en App/Providers de nuestro proyecto y declarar que usaremos Blade con:

use Illuminate\Support\Facades\Blade;

Esto, se añade antes de la clase, lo siguiente será agregar la nueva condición dentro de la función boot:

Blade::if('pc', function () {
return preg_match(«/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i», $_SERVER[«HTTP_USER_AGENT»]) ? false : true;
});

Resultado final

namespace App\Providers;
use Illuminate\Support\ServiceProvider;
//use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\Blade;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Blade::if('pc', function () {
return preg_match(«/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i», $_SERVER[«HTTP_USER_AGENT»]) ? false : true;
});
}

}

¿Cómo se usaría?

Basta con abrir cualquier archivo de plantilla blade, y utilizar la condición de la siguiente manera.
@pc
EL CONTENIDO AQUI APARECERA EN PC
@else
EL CONTENIDO AQUI APARECERA EN MOVILES
@endpc

Igual si resulta más cómodo, podemos agregar una segunda condición solo para móviles usando el mismo principio:
Blade::if('movil', function () {
return preg_match(«/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i», $_SERVER[«HTTP_USER_AGENT»]) ? true : false;
});

Y lo usaríamos así:
@movil
EL CONTENIDO AQUI APARECERA EN MOVIL
@else
EL CONTENIDO AQUI APARECERA EN ORDENADORES
@endmovil