SyMfonAK - vyvíjame databázy pomocou frameworku Symfony

Ako získať objekt Request zo Service Container-a (How to Retrieve the Request from the Service Container)

Z SyMfonAK
Prejsť na: navigácia, hľadanie

Symfony dokumentáciaService Container → Ako získať objekt Request zo Service Container-a (How to Retrieve the Request from the Service Container)


originál návod


namespace App\Newsletter;

use Symfony\Component\HttpFoundation\RequestStack;

class NewsletterManager
{
    protected $requestStack;

    public function __construct(RequestStack $requestStack)
    {
        $this->requestStack = $requestStack;
    }

    public function anyMethod()
    {
        $request = $this->requestStack->getCurrentRequest();
        // ... do something with the request
    }


Takto som to použil pre výber prípustných hodnôt ponuky vo formulári:

<?php
// src/Form/ZoologyType.php
namespace App\Form;

use Symfony\Component\Form\AbstractType;
use App\Entity\Zoology;
use App\Entity\Lkppristupnost;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;

class ZoologyType  extends AbstractType
{
    protected $requestStack;

    public function __construct(RequestStack $requestStack)
    {
        $this->requestStack = $requestStack;
    }  

    public function buildForm(FormBuilderInterface $builder, array $options)
    {

        $builder
            ->add('zoology_locality')
            ->add('zoology_date')
            ->add('zoology_longitud')
            ->add('zoology_latitud')
            ->add('zoology_description')
	    ->add('zoology_accessibility', EntityType::class, [
	      'class' => Lkppristupnost::class,
	      'choice_label' => function ($lkppristupnost){
                     $request = $this->requestStack->getCurrentRequest();
                     $aPom = $request->getLocale();  
		      if ($aPom == 'sk')
		      { return $lkppristupnost->getLkppristupnostPopissk(); }
		      else
		      { return $lkppristupnost->getLkppristupnostPopisen(); }
               }
	      ,
	      ])
            ->add('lkpzoospecies_id')
            ->add('count')
            ->add('lkpzoochar_id')
            ->add('description')
            ->add('save', SubmitType::class)
        ;
    }
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => Zoology::class,
        ]);
    }
}