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...

Nueva web Laboratorios Valquer

En colaboración con Amvos, hemos realizado la nueva web de laboratorios Valquer. Es una empresa fundada en 1975, con presencia en más

Nueva web credithousecar.com

Ha sido un placer realizar todo el diseño y la imagen corporativa de credithousecar.com Una web moderna y actual, con un diseño

Más...

Nueva web Laboratorios Valquer

En colaboración con Amvos, hemos realizado la nueva web de laboratorios Valquer. Es una empresa fundada en 1975, con presencia en más

Nueva web credithousecar.com

Ha sido un placer realizar todo el diseño y la imagen corporativa de credithousecar.com Una web moderna y actual, con un diseño

Deja un comentario

Ebook Gratis 7 claves para atraer clientes a tu web