Symfony 我的 url 得到一个 id 而不是 slug

问题描述 投票:0回答:1

我创建了一个函数,当您选择客户时,它会检索有关客户的信息,例如关联的保单类型以及与此类保单关联的佣金率。在我的控制器中,有一个方法可以通过其 slug 检索客户端。其余的工作是在模板中使用ajax 完成的。仅当我选择客户端时,url 会收到未知的 id 而不是 slug,并且出现错误“未找到客户端”。请帮忙

/**
 * @Route("/get-client-donnees/{slug}", name="get-data-client", methods={"GET"})
 */

    public function ClientData($slug, ClientsRepository $clientsRepository)
    {
        // Récupérez le client en fonction du slug
//        $clientRepository = $this->getDoctrine()->getRepository(Clients::class);
        $client = $clientsRepository->findOneBy(['slug' => $slug]);

        if (!$client) {
            return new JsonResponse(['error' => 'Client not found'], 404);
        }

        // Récupérez la police associée au client (vous devrez adapter cela en fonction de votre logique métier)
        $police = $client->getPolicies()->first();

        if (!$police) {
            return new JsonResponse(['error' => 'Police not found for the client'], 404);
        }

        // Récupérez le type de police associé à la police
        $typePolice = $police->getTypePolice();

        if (!$typePolice) {
            return new JsonResponse(['error' => 'TypePolice not found for the police'], 404);
        }

        // Récupérez le taux associé au type de police
        $rate = $typePolice->getRate();

        // Retournez le type de police et le taux au format JSON
        $data = [
            'typePolice' => $typePolice->getName(),
            'rate' => $rate,
        ];

        return new JsonResponse($data);
    }
<script>
        $(document).ready(function () {
            // Détecte les changements dans le champ client
            $('#primes_police').on('change', function () {
                var slug = $(this).val();

                // Faites une requête AJAX pour récupérer le type de police et le taux en fonction du client
                $.ajax({
                    url: '/get-client-donnees/' + slug,
                    method: 'GET',
                    success: function (data) {
                        // Met à jour le champ typePolice avec le type de police récupéré
                        $('#primes_typePolice').val(data.typePolice);

                        // Met à jour le champ rate avec le taux récupéré
                        $('#primes_rate').val(data.rate);
                    },
                    error: function () {
                        console.error('Erreur lors de la récupération du type de police et du taux.');
                    }
                });
            });

            // Détecte les changements dans le champ primeNet
            $('#primes_netPrime').on('input', function () {
                // Récupère les valeurs des champs
                var primeNet = parseFloat($(this).val()) || 0;
                var rate = parseFloat($('#primes_rate').val()) || 0;

                // Effectue le calcul de la commission
                var commission = primeNet * rate;

                // Met à jour le champ commission
                $('#primes_commission').val(commission);
            });
        });
    </script>
jquery ajax symfony
1个回答
0
投票

将 jQuery 传递的

slug
与控制器和数据库中的 slug 进行比较:

$('#primes_police').on('change', function () {
   var slug = $(this).val();             
   console.log(slug);
   //.....
    
    
public function ClientData($slug, ClientsRepository $clientsRepository){
    dd($slug);
    //.....
© www.soinside.com 2019 - 2024. All rights reserved.