Obtener parámetros en el controlador de Symfony 4.2

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn

APUNTES | Obtener parámetros en el controlador de Symfony 4.2

 

Disponemos de dos formas para obtener los parámetros en los controladores de Symfony:

La manera quizás más rápida y fácil es:

class IndexController extends SymfonyController
{
    public function listAction()
    {
        $ApiKey = $this->container->getParameter('api_key');
    }
}

A partir de Symfony 4.1 podemos obtener los parámetros como un servicio:

Obteniendo los parámetros de contenedor como un servicio

En el ejemplo suponemos que tenemos los parámetros de conexión a una Api:

/config/services.yaml

parameters:
    locale: 'es'
    api_client: 'xxxx'
    api_key: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

services:
    # default configuration for services in *this* file
    _defaults:
        autowire: true # Automatically injects dependencies in your services.
        autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
        public: false # Allows optimizing the container by removing unused services; this also means
    # fetching services directly from the container via $container->get() won't work.
    # The best practice is to be explicit about your dependencies anyway.
    bind:
       $cli: '%api_client%'
       $apikey: '%api_key%'

Con bind y autowire los pasamos al servicio y ya los tenemos disponibles en los controladores.

 

Después para obtener los parámetros en el controlador:

<?php

namespace App\Controller\cliente;

use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

/**
* @Route("/articulo")
*/

class ArticuloController extends Controller{

    private $cli;
    private $apikey;

// los pasamos al constructor y ya los tenemos disponibles para el resto de métodos.
public function __construct(string $cli, string $apikey){
    $this->cli = $cli;
    $this->apikey = $apikey;
}

/**
* @Route("/")
*/
public function indexAction(){

    $articuloJSON = file_get_contents(
           "http://www.example.com/api/?r=es/articulo/1004&cli=$this->cli&apikey=$this->apikey");
    $articuloArray = json_decode($articuloJSON,true);

    return $this->render('index.html.twig', array("articulo" => $articuloArray));
}

 

Espero que os sea de utilidad, cualquier cosa comentad 😉

FuenteFuenteFuente

 

Más...

Cómo añadir un plugin a WordPress

Paso a paso te enseñamos a añadir un plugin a Wordpress de la manera más sencilla posible. Toma nota de las indicaciones y crea nuevos plugins para WordPress.

Deja un comentario