Hola como estan , tengo una duda existencial de como resolver esto:
Tengo 3 tablas = Automoviles ; tb_reparticiones ; rel_automovil_reparticiones (campos= id; automoviles_id; reparticion_id ; fecha_alta; fecha_baja, etc ). La idea es para un sistema de patrimonio, un automóvil puede estar en varias reparticiones a lo largo de su vida útil, de ahí es q utilizo una tabla relacional entre automóviles y reparticiones. En el form de automoviles tuve q agregar un select2 con un campo fuera del modelo (el campo reparticion_id esta en la relacional), utilizando variables de session mi idea es capturar ese id_reparticion elegido del select2 y pasarlo al controlador Create. este es un pedazo de mi _form
cargo todos mis use mas estos 2
use kartik\select2\Select2;
use yii\web\Session;
$reparticion=TbReparticiones::find()->orderBy('reparticion')->all();
// without model
echo Select2::widget([
'name' => 'reparticion',
'data' => ArrayHelper::map($reparticion,'id_reparticion','reparticion'),
'options' => [
'placeholder' => 'Seleccione la reparticion ...',
'class'=>'form-control',
],
'pluginEvents'=>["select2:select" => "function() { var variableJS = $(this).val();
alert (variableJS); }",]
]);
//$var_PHP = "<script> document.writeln(variableJS); </script>";
$var_PHP= 155;
$session = Yii::$app->session;
$session['ValorReparticion'] = $var_PHP;
?>
<br>
</div>
observacion= colocando $var_PHP en un valor fijo funciona perfectamente, la linea anterior comentada la saque de google y funciona si la uso con php puro en otro sitio ejemplo
Volviendo a YII2 , este es mi codigo del controlador
agrego este use
use yii\web\Session;
public function actionCreate()
{
$model = new Automoviles();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
$fecha_alta = date('Y-m-d');
$causa_baja = null;
$causa_alta = 1;
$fecha_baja = null;
$session = Yii::$app->session;
$reparticion = $session['ValorReparticion'];
Yii::$app->db->createCommand()->insert('rel_automoviles_reparticiones', [
'automovil_id' => $model->id,
'reparticion_id' => $reparticion,
'fecha_alta' => $fecha_alta,
'fecha_baja' => $fecha_baja,
'causa_alta_id' => $causa_alta,
'causa_baja_id' => $causa_baja,
'observacion' => $model->observaciones,
])->execute();
return $this->redirect(['view', 'id' => $model->id]);
}
return $this->render('create', [
'model' => $model,
]);
}
ESTE codigo del controlador inserta automaticamente en la tabla automoviles lo ingresado por el form, y luego a mano inserto los valores en la tabla tb_rel_automoviles_reparticiones, aqui ya tengo el id insertado del automovil.
Mi gran pregunta es, como tomo el valor de la reparticion en el select2 en una variable? el valor fijo funcino perfecto pero esta linea no :
$var_PHP = “<script document.writeln(variableJS); /script>”; (falta aqui los signo sino no me muestra pero en el php de arriba esta bien)
en el select2 puse un alert en javascrip y me muestra cada id de la reparticion q voy seleccionando, pero como hago para sacar ese valor y colocarlo en mi variable $var_PHP. Gracias