我创建了一个函数,当您选择客户时,它会检索有关客户的信息,例如关联的保单类型以及与此类保单关联的佣金率。在我的控制器中,有一个方法可以通过其 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 传递的
slug
与控制器和数据库中的 slug 进行比较:
$('#primes_police').on('change', function () {
var slug = $(this).val();
console.log(slug);
//.....
public function ClientData($slug, ClientsRepository $clientsRepository){
dd($slug);
//.....