Setear un por default en un create

tengo un formulario, el cual en si es un cuestionario. este cuestionario va asignado a cada asistente. (despues de asistir a un evento, cada asistente debe realizar una evaluacion del evento a ver que le parecio, si le gusto etc) entonces, en mi formunlario tengo una variable llamada idasistente, la cual al momento de llenar el formulario quien llena el formulario no debe poder cambiar este valor

yo se lo que necesito, y es asignar el valor por defecto en el actionCreate($variable);

para despues hacer esto

$model->idasistencia =$variable;

Lo que no recuerdo es como pasarle esa $variable, no recuerdo, este es el form




<?php 

	$eventoreportedatos = $_GET['asist'];

	$datosdeasistente = Yii::app()->db->createCommand("SELECT * FROM tbl_asistencia WHERE id = ".$eventoreportedatos)->queryRow();

	

	?>

	

	<?php echo $form->errorSummary($model); ?>


	<div class="row">

		<?php  #$form->labelEx($model,'idasistencia'); ?>

		<?php #echo $form->textField($model,'idasistencia',array('value' => $eventoreportedatos)); ?>

		<?php  #$form->error($model,'idasistencia'); ?>

	</div>




	<div class="row">

		<?php echo $form->labelEx($model,'pregunta1',array('style'=>'width:90%')); ?><br>

		<?php echo $form->radioButtonList($model,'pregunta1',array('SI'=>'SI','NO'=>'NO'), array( "separator"=>"<br/>", "style"=>"width:10%")); ?>

		<?php echo $form->error($model,'pregunta1'); ?>

	</div>

<br>

	<div class="row">

		<?php echo $form->labelEx($model,'pregunta2',array('style'=>'width:90%')); ?><br>

		<?php echo $form->radioButtonList($model,'pregunta2' ,array('SI'=>'SI','NO'=>'NO'), array( "separator"=>"<br/>", "style"=>"width:10%")); ?>

		<?php echo $form->error($model,'pregunta2'); ?>

	</div>

<br>

	<div class="row">

		<?php echo $form->labelEx($model,'pregunta3',array('style'=>'width:90%')); ?><br>

		<?php echo $form->radioButtonList($model,'pregunta3' ,array('SI'=>'SI','NO'=>'NO'), array( "separator"=>"<br/>", "style"=>"width:10%")); ?>

		<?php echo $form->error($model,'pregunta3'); ?>

	</div>

<br>




mi controller




public function actionCreate(eventoreportedatos)

	{

		$model=new TblEvaluacion;


		// Uncomment the following line if AJAX validation is needed

		// $this->performAjaxValidation($model);


		if(isset($_POST['TblEvaluacion']))

		{

			$model->attributes=$_POST['TblEvaluacion'];

			$model->idasistencia = eventoreportedatos; 

 

			if($model->save())

				$this->redirect(array('view','id'=>$model->id));

		}


		$this->render('create',array(

			'model'=>$model,

		));

	}



como hago para que el actionCreate envie la variable que esta en el form estoy tomando por $_GET???

alguna ayuda_?

lo que quieres es enviar el numero del evento junto al id del asistente?

Puedes agregar variables GET en el "action" del formulario, pero creo que en tu caso no es necesario porque el "action" del formulario por default es la url actual, y tu url actual ya tiene la variable eventoreportedatos (si no la tuviera no podrías acceder al formulario).

Creo que me explique mal, asi tengo mi actionCreate




public function actionCreate()

<?php

	{

		$model=new TblEvaluacion;


		// Uncomment the following line if AJAX validation is needed

		// $this->performAjaxValidation($model);


		if(isset($_POST['TblEvaluacion']))

		{

			$model->attributes=$_POST['TblEvaluacion'];

				#$model->idasistencia = 3;   <<-- ESTO ES LO QUE QUIERO HACER

			if($model->save())

				$this->redirect(array('view','id'=>$model->id));

		}


		$this->render('create',array(

			'model'=>$model,

		));

	}

?>



El está esperando que le envie el idasistente, en el form deberia ser un textfield, pero yo no quiero mostrarlo en el form, la cuestion es que yo le voy a mandar un correo, al participante con un url, el directamente podra acceder a la applicacion, autenticarse y rellenar el formulario, es el mismo url el que determina cual será el idparticipante.

imaginemos que el url temina en "…tblEventoreporte/3" entonces éste seria el id del asistente o participante. quisiera que en el action create asignara al idparticipante el numero "3" no se si es una buena práctica pero no se como mas hacerla

hay varias cosas que puedes hacer.

1)enviar el id que necesitas por GET desde el ACTION del formulario.

2)crear un hiddenField para enviar el ID a traves del ARRAY del POST (aun no entendi si ese ID que buscas es parte del $model, pero te dejo la referencia de ambos casos)

.- si el ID es parte de tu modelo usa Esta opcion

.- si no usa Esta otra opcion

Buenas.

La segunda opción que te comenta Hender es la correcta (en mi opinión).

Un saludo.

Buenas tardes Hender, gracias por tu comentario, lo que no queria es que cualquiera con firebug pueda cambiar ese ID y posteriormente pueda realizar la evaluacion de cualquier otro participante, total, todos los asistentes tendrán el mismo rol en la app, pues bien, les muestro lo que hice para ver si está bien. si es seguro.

primero envie por get el ?asist=XXXXXXXXXXXXX donde XXXXXXXXX será el id en md5, el url quedaria asi:

http://localhost/yii/Produccion2)/TblEvaluacion/Create?asist=eccbc87e4b5ce2fe28308fd9f2a7baf3

entonces lo unico que hice desde el actionCreate fue lo siguiente




	public function actionCreate()

	{

		$eventoreportedatos = $_GET['asist'];

		$eventoreportedatos = Yii::app()->db->createCommand("SELECT id FROM tbl_asistencia WHERE MD5(id)= '".$eventoreportedatos."'")->queryRow();

		

		$model=new TblEvaluacion;


		// Uncomment the following line if AJAX validation is needed

		// $this->performAjaxValidation($model);


		if(isset($_POST['TblEvaluacion']))

		{

			$model->attributes=$_POST['TblEvaluacion'];

				$model->idasistencia = $eventoreportedatos['id'];  

			if($model->save())

				$this->redirect(array('view','id'=>$model->id));

		}


		$this->render('create',array(

			'model'=>$model,

		));

	}




no se si es correcto hacerlo de esta manera… será lo mas seguro?

Pues lo mas seguro no necesariamente, segun tu manejo de roles y sesiones cualquiera podria cambiar el parametro get si conoce la URL y sabe explicitamente que la codificacion es MD5, por eso te propuse usar POST.