es Español

Obtener parámetros en el controlador de Symfony 4.2

Share on facebook
Share on linkedin
Share on twitter
Share on email

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

 

Si te ha servido, deja un comentario

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Más entradas
Marketing Digital en Elche
Blog

Marketing Digital en Elche

¿Estás buscando una Agencia de Marketing en Elche que se encargue de la estrategia de medios de tu negocio? Has venido al lugar indicado, somos

Data Protect Plus
Blog

Data Protect Plus

Data Protect Plus es una empresa dedicada a proporcionar un servicio de consultoría global en protección de datos a nivel nacional. Cuenta con un equipo

Categorías
¿Quieres impulsar tu negocio?
escríbenos y manténte en contacto
Desarrollo de tiendas online Garber Informática
Contacta con nosotros