Inicio rápido con consola

Nota

Si no te gusta el modo consola, puedes cambiar a inicio rápido con web tools (UbiquityMyAdmin).

Instalar Composer

ubiquity utiliza Composer para gestionar sus dependencias. Por lo tanto, antes de usar, usted tendrá que asegurarse de que tiene Composer instalado en su máquina.

Instalar Ubiquity-devtools

Descargue el instalador de Ubiquity-devtools utilizando Composer.

composer global require phpmv/ubiquity-devtools

Pruebe su reciente instalación haciendo:

Ubiquity version
../_images/ubi-version.png

Puedes obtener en todo momento ayuda con un comando tecleando: Ubiquity help seguido de lo que buscas.

Ejemplo :

Ubiquity help project

Creación de proyectos

Crear el proyecto **quick-start

Ubiquity new quick-start

Estructura del directorio

El proyecto creado en la carpeta quick-start tiene una estructura sencilla y legible:

la carpeta app contiene el código de tu futura aplicación:

app
  cache
  config
  controllers
  models
  views

Start-up

Vaya a la carpeta recién creada quick-start e inicie el servidor php incorporado:

Ubiquity serve

Compruebe el correcto funcionamiento en la dirección http://127.0.0.1:8090:

../_images/quick-start-main.png

Nota

Si el puerto 8090 está ocupado, puede iniciar el servidor en otro puerto utilizando la opción -p.

Ubiquity serve -p=8095

Controlador

La aplicación de consola dev-tools ahorra tiempo en operaciones repetitivas. Pasamos por ella para crear un controlador.

Ubiquity controller DefaultController
../_images/controller-creation.png

Podemos entonces editar el archivo app/controllers/DefaultController en nuestro IDE favorito:

app/controllers/DefaultController.php
1namespace controllers;
2 /**
3  * Controller DefaultController
4  */
5class DefaultController extends ControllerBase{
6     public function index(){}
7}

Añada el mensaje tradicional y pruebe su página en http://127.0.0.1:8090/DefaultController.

app/controllers/DefaultController.php
class DefaultController extends ControllerBase{

    public function index(){
        echo 'Hello world!';
    }

}

Por ahora, no hemos definido rutas, por lo que el acceso a la aplicación se realiza según el siguiente esquema:
controllerName/actionName/param

La acción por defecto es el método index, no necesitamos especificarlo en la url.

Route

Importante

El enrutamiento se define con el atributo Route (con php>8) o la anotación @route y no se hace en un fichero de configuración:
es una elección de diseño.

El parámetro automated puesto a true permite definir los métodos de nuestra clase como sub-rutas de la ruta principal /hello.

Con anotaciones:

app/controllers/DefaultController.php
 1namespace controllers;
 2/**
 3 * Controller DefaultController
 4 * @route("/hello","automated"=>true)
 5 */
 6class DefaultController extends ControllerBase{
 7
 8    public function index(){
 9        echo 'Hello world!';
10    }
11
12}

Con atributos (php>8):

app/controllers/DefaultController.php
 1namespace controllers;
 2use Ubiquity\attributes\items\router\Route;
 3
 4#[Route('/hello', automated: true)]
 5class DefaultController extends ControllerBase{
 6
 7    public function index(){
 8        echo 'Hello world!';
 9    }
10
11}

Router cache

Importante

Ningún cambio en las rutas es efectivo sin inicializar la caché.
Las anotaciones nunca se leen en tiempo de ejecución. Esto también es una elección de diseño.

Podemos utilizar la consola para la reinicialización de la caché:

Ubiquity init-cache
../_images/init-cache.png

Comprobemos que la ruta existe:

Ubiquity info:routes
../_images/info-routes1.png

Ahora podemos probar la página en http://127.0.0.1:8090/hello.

Acción y ruta con parámetros

Ahora crearemos una acción (sayHello) con un parámetro (name), y la ruta asociada (to):
La ruta utilizará el parámetro name de la acción:

Ubiquity action DefaultController.sayHello -p=name -r=to/{name}/
../_images/action-creation.png

Tras reinicializar la caché (comando init-cache), debería aparecer el comando info:routes:

../_images/2-routes.png

Cambia el código en tu IDE: la acción debe decir Hola a alguien…

app/controllers/DefaultController.php
     /**
      * @route("to/{name}/")
      */
     public function sayHello($name){
             echo 'Hello '.$name.'!';
     }

y prueba la página en http://127.0.0.1:8090/hello/to/Mr SMITH

Acción, parámetros de ruta y vista

Ahora crearemos una acción (information) con dos parámetros (title and message), la ruta asociada (info) y una vista para mostrar el mensaje: |br|La ruta utilizará los dos parámetros de la acción.

Ubiquity action DefaultController.information -p=title,message='nothing' -r=info/{title}/{message} -v

Nota

El parámetro -v (–view) se utiliza para crear la vista asociada a la acción.

Tras reinicializar la caché, ahora tenemos 3 rutas:

../_images/3-routes.png

Volvamos a nuestro entorno de desarrollo y veamos el código generado:

app/controllers/DefaultController.php
     /**
      * @route("info/{title}/{message}")
      */
     public function information($title,$message='nothing'){
             $this->loadView('DefaultController/information.html');
     }

Necesitamos pasar las 2 variables a la vista:

/**
 * @route("info/{title}/{message}")
 */
public function information($title,$message='nothing'){
        $this->loadView('DefaultController/information.html',compact('title','message'));
}

Y utilizamos nuestras 2 variables en la vista twig asociada:

app/views/DefaultController/information.html
     <h1>{{title}}</h1>
     <div>{{message | raw}}</div>

Podemos probar nuestra página en http://127.0.0.1:8090/hello/info/Quick start/Ubiquity is quiet simple
Es obvio

../_images/quiet-simple.png