2016-11-29 3 views
0

Ich versuche, einen Wert von Javascript in eine Formularaktion in Yii2 setzen ist es möglich? Genauer gesagt muss ich eine URL-Änderung für jede Option vornehmen, die in einer Dropdown-Liste ausgewählt ist.Übergeben Sie Javascript-Wert an eine Formularaktion URL in Yii2

Form in views/seite.php

$form = ActiveForm::begin([ 
     'id' => 'form', 
     'method' => 'POST', 
     'action' => Url::to(['programas/'.Tours::findOne(['pk' => ])->programa]), 
]); 

<?= $form->field(new \app\models\Tours(), 'nombre')->dropDownList([], 
    [ 
     'prompt' => 'Programa', 
     'id' => 'child1_child2', 
     'onchange' => 'updateValue(this.value)', 
    ] 
)->label(false); ?> 

Js Datei

function updateValue(val){ 
    x = document.getElementById("test").value; 
    // document.getElementById("form").action = "programas/"; 
} 

So rette ich den Wert von der gewählten Option mit JS, aber ich brauche, um es hier 'pk' => 'Wert'

Dabei ist Wert der Wert der ausgewählten Option # child1_child2.

'action' => Url::to(['programas/'.Tours::findOne(['pk' => ])->programa]) 

Danke für die Hilfe.

Antwort

1

Sie können mit einigen Änderungen eine der folgenden Ansatz verwenden:

//pk => programa 
$data = [ 
    1 => 'programa1', 
    2 => 'programa2', 
    3 => 'programa3', 
]; 

1) Verwenden JS

<?= $form->field(new \app\models\Tours(), 'nombre')->dropDownList($data, ['prompt' => 'Programa'])->label(false); ?> 

JS

$this->registerJs(' 
$("#dropdownID").change(function() { 
    var text = $("#dropdownID option:selected").text(); 
    $("#formID").attr("action", "/pathtoproject/programas/" + text); 
}); 
', \yii\web\View::POS_END); 

2) Verwenden Ajax-Aufruf

<?= $form->field(new \app\models\Tours(), 'nombre')->dropDownList($data, [ 
    'prompt' => 'Programa', 
    'onchange'=> '$.get("'.Url::toRoute('get-action').'", { id: $(this).val() }) 
     .done(function(data) { 
      $("#formID").attr("action", data); 
     } 
    );' 
])->label(false); ?> 

-Controller

public function actionGetAction($id) 
{ 
    $name = Tours::findOne(['pk' => $id])->programa]; 
    echo \yii\helpers\Url::to(['programas/'.$name]); 
} 
+0

Hey, das dank viel helfen :) !! – Rugleh

Verwandte Themen