2015-12-21 2 views
0

Quelqu'un peut-il m'aider avec la clé composite? Je ne suis pas capable de fonctionner correctement.Yii2 modal avec clé composite

function init_click_handlers(){ 
    $(".button-endereco").click(function(e) { 
      var fcodigo = $(this).closest("tr").data("codigo"); 
      var fcodigopessoa = $(this).closest("tr").data("codigopessoa"); 
      var map = {codigo: $(this).closest("tr").data("codigo"), codigopessoa: $(this).closest("tr").data("codigopessoa")}; 
      $.get(
       "update ", 
       { 
        codigo: fcodigo 
        codigopessoa: fcodigopessoa 
       }, 
       function (data) 
       { 
        $("#endereco-modal").find(".modal-body").html(data); 
        $(".modal-body").html(data); 
        $("#endereco-modal").modal("show"); 
       } 
      ); 
     }); 

} 

init_click_handlers(); //first run 
$("#endereco_id").on("pjax:success", function() { 
    init_click_handlers(); //reactivate links in grid after pjax update 
}); 

$url = Yii::$app->urlManager->createUrl('../endereco/update?codigo='.$dataProvider->codigo.'&codigopessoa='.$dataProvider->codigopessoa); 
+0

Pourriez-vous expliquer davantage comment il ne fonctionne pas correctement? –

+0

Avec le script de cette façon, le formulaire apparaît tronqué et google chrome sur le chemin d'inspecter accuse erreur dans javascript. Mais si je mets une virgule après le code: fcodigo pour donner une erreur, mais le _form apparaît vide. –

Répondre

0

Si vous souhaitez consulter les données contenues dans un dataProvider $ vous firts besoin pour obtenir le modèle dont vous avez besoin. Dans dataProvider tous les modèles se rapportent à votre requête sont disponibles et vous pouvez obtenir à partir du tableau de modèles, le modèle spécifique accès par l'indice approprié, par exemple:

myModel = $dataProvider->models[yourIndex] 

myValue = myModel->myField 

Dans votre exemple, le cas de l'ennemi que vous pourriez obtenir le vaue de cette façon

myModel = $dataProvider->models[0]: 
myValue = myModel->codigo; 
+0

Ce sont deux modèles dont j'ai besoin, j'essaie en fait d'utiliser une forme modale avec une clé composite. Jusqu'à ce que vous y arriviez, mais d'une erreur de script et interférer dans d'autres modules comme dans kartik. –

0

Je suis arrivé à 90% de la réponse, mais n'a pas pu attraper ma clé composite (mot de passe, codigopessoa), forcé les valeurs à tester la fonction et cela a fonctionné. Donc, je manque les valeurs de la colonne (clé composite).

function init_click_handlers(){ 
    $(".button-endereco").click(function(e) { 
      fcodigo = $(this).closest("tr").data("codigo"); 
      fcodigopessoa = $(this).closest("tr").data("codigopessoa"); 
      $.ajax({ 
       url: "'.Yii::$app->urlManager->createUrl('endereco/update').'", 
       type: "GET", 
       data: {"codigo": parseInt(17), "codigopessoa":parseInt(8)}, 
       dataType: "html", 
       success: function(data) { 
         $("#endereco-modal").find(".modal-body").html(data); 
         $(".modal-body").html(data); 
         $("#endereco-modal").modal("show"); 
       } 
      }); 
     }); 
} 

init_click_handlers(); //first run 
$("#endereco_id").on("pjax:success", function() { 
    init_click_handlers(); //reactivate links in grid after pjax update 
}); 
+0

données: {"codigo": parseInt (fcodigo), "codigopessoa": parseInt (fcodigopessoa)}, RÉSULTAT: GET http://sistema.iprem.com/endereco/update?codigo=NaN&codigopessoa=NaN 404 (introuvable) –

0

[travail 100%] Enfin il a obtenu, pour ceux qui veulent utiliser le Gridview (Kartik) avec la clé composite suit le code:

function init_click_handlers(){ 
    $(".button-endereco").click(function(e) { 
      chave = $(this).closest("tr").data("key"); 
      $.ajax({ 
       url: "'.Yii::$app->urlManager->createUrl('endereco/update').'", 
       type: "GET", 
       data: {"codigo": parseInt(chave["codigo"]), "codigopessoa":parseInt(chave["codigopessoa"])}, 
       //data: {keylist: parseInt(keys)}, 
       dataType: "html", 
       success: function(data) { 
         $("#endereco-modal").find(".modal-body").html(data); 
         $(".modal-body").html(data); 
         $("#endereco-modal").modal("show"); 
       } 
      }); 
     }); 
} 

init_click_handlers(); //first run 
$("#endereco_id").on("pjax:success", function() { 
    init_click_handlers(); //reactivate links in grid after pjax update 
});