Yii Framework Forum: Pasar un parámetro opcional a una funcion action - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Pasar un parámetro opcional a una funcion action Rate Topic: -----

#1 User is offline   rookie5 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 8
  • Joined: 25-May 12

Posted 11 June 2012 - 10:18 AM

Hola a todos, nuevamente requiero de sus conocimientos....

Quiero pasar un parametro opcional a un action, es decir....

pubic function actionMy_action(parametro1, parametro2 (ESTE PUEDE SER OPCIONAL, ES DECIR, PUEDE VENIR NULO))
{
..............
}
0

#2 User is offline   bluyell 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 222
  • Joined: 28-October 11

Posted 11 June 2012 - 12:44 PM

muy simple:

por defecto inicializa el parametro con un valor, cuando nadie incluya ese parametro, tomara ese valor por defecto.


public function actionMyAction($parametroObligado,  $otroMasObligado,  $esteEsOpcional=1){
    //
}

1

#3 User is offline   Eduardo Méndez 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 34
  • Joined: 29-June 12

Posted 10 July 2012 - 09:45 AM

Hola... tengo un problemita no encuentro cómo pasarle un parámetro a una función que tengo en el controlador. Especificamente tengo esto:

public function actionGetTextFile($id)
	{
			
		
			$extensiones = array("application/msword"=>"doc","application/pdf"=>"pdf","image/jpeg"=>"jpg");
			
			$id = $_GET['id'];
			$model = tabla1::model()->findByPk($id);
			$content = $model->archivo;

			// header HTML
			header("Cache-Control: public");
			header("Content-Description: File Transfer");
			header("Content-Type: application/octet-stream; ");
			header("Content-Disposition: attachment; filename=edd.txt");
			header("Content-Transfer-Encoding: binary");
			
			//agregar el contenido
			print_r($content);
	}


y en mi vista hago el enlace asi:

echo CHtml::link('Descargar 1',array('tabla1/getTextFile')); echo "<br>";


la idea es pasarle un id para que de acuerdo a ese id me traiga un archivo y me lo descargue
0

#4 User is offline   JCS 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 57
  • Joined: 10-January 11
  • Location:Bogotá

Posted 10 July 2012 - 11:13 AM

Hola, prueba con esto

<?php
	echo CHtml::link(
		'Descargar',
		Yii::app()->createUrl('tabla1/getTextFile', array('id'=>$id))
	);
?>

0

#5 User is offline   Eduardo Méndez 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 34
  • Joined: 29-June 12

Posted 10 July 2012 - 03:03 PM

Bien!!! Gracias amigo! era lo que buscaba... con esto ya por lo menos ejecuta la función, ahora lo que me falta es que me descargue el archivo o el contenido que quiero, ya que lo que deseo es buscar dentro de una tabla, el contebnido tipo blob que ya guarde allí. Me imagino que debo entonces incrustar dentro de la acción el sql cierto?

Voy a ver cómo lo logro...

View PostJCS, on 10 July 2012 - 11:13 AM, said:

Hola, prueba con esto

<?php
	echo CHtml::link(
		'Descargar',
		Yii::app()->createUrl('tabla1/getTextFile', array('id'=>$id))
	);
?>


0

#6 User is offline   JaCk0 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 14
  • Joined: 04-September 11

Posted 11 July 2012 - 02:12 AM

View PostJCS, on 10 July 2012 - 11:13 AM, said:

Hola, prueba con esto

<?php
	echo CHtml::link(
		'Descargar',
		Yii::app()->createUrl('tabla1/getTextFile', array('id'=>$id))
	);
?>



Si quieres un código iun poco más bonito puedes probar lo siguiente:
echo CHtml::link('Descargar', array('tabla1/getTextFile', 'id'=>$id));

0

#7 User is offline   Eduardo Méndez 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 34
  • Joined: 29-June 12

Posted 16 July 2012 - 03:48 PM

Oye, estoy tratando de subir un archivo con esto y no funciona. He hecho un ejemplo del foro y no me funciona:

public function actionCreate()
	{
		$model=new archivo;

		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['archivo']))
		{
			$model->attributes=$_POST['archivo'];
			
			$archivo = CUploadedFile::getInstance($model,'contenido');
			$model->nombre = $archivo->name;
			$model->extension = $archivo->type;


			$fp = fopen($archivo->tempName, 'r');
			$content = fread($fp, filesize($archivo->tempName));
			fclose($fp);

			  $model->contenido = $content;

			
			
			if($model->save())
				$this->redirect(array('view','id'=>$model->id_archivo));
		}

		$this->render('create',array(
			'model'=>$model,
		));
	}


Luego voy al form y modifico "fileField" para cargar el archivo:


<div class="row">
		<?php echo $form->labelEx($model,'contenido'); ?>
		<?php echo $form->fileField($model,'contenido'); ?>
		<?php echo $form->error($model,'contenido'); ?>
	</div>


Después voy al create y cargo el archivo sin llenar nombre ni extension y me muestra este error:

Trying to get property of non-object 


y me señala esta línea:
   $model->nombre = $archivo->name;


Más abajo en el Stack Trace
meseñala esta línea tambien:

Yii::createWebApplication($config)->run();


¿qué será lo que estoy haciendo mal?
0

#8 User is offline   Luciano 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 134
  • Joined: 20-September 09
  • Location:Buenos Aires, Argentina

Posted 20 July 2012 - 11:40 PM

View Postemendez, on 16 July 2012 - 03:48 PM, said:

Oye, estoy tratando de subir un archivo con esto y no funciona. He hecho un ejemplo del foro y no me funciona:

public function actionCreate()
	{
		$model=new archivo;

		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['archivo']))
		{
			$model->attributes=$_POST['archivo'];
			
			$archivo = CUploadedFile::getInstance($model,'contenido');
			$model->nombre = $archivo->name;
			$model->extension = $archivo->type;


			$fp = fopen($archivo->tempName, 'r');
			$content = fread($fp, filesize($archivo->tempName));
			fclose($fp);

			  $model->contenido = $content;

			
			
			if($model->save())
				$this->redirect(array('view','id'=>$model->id_archivo));
		}

		$this->render('create',array(
			'model'=>$model,
		));
	}


Luego voy al form y modifico "fileField" para cargar el archivo:


<div class="row">
		<?php echo $form->labelEx($model,'contenido'); ?>
		<?php echo $form->fileField($model,'contenido'); ?>
		<?php echo $form->error($model,'contenido'); ?>
	</div>


Después voy al create y cargo el archivo sin llenar nombre ni extension y me muestra este error:

Trying to get property of non-object 


y me señala esta línea:
   $model->nombre = $archivo->name;


Más abajo en el Stack Trace
meseñala esta línea tambien:

Yii::createWebApplication($config)->run();


¿qué será lo que estoy haciendo mal?


Buenas!

Cuando definís el widget del formulario le indicás 'enctype' como 'multipart/form-data'?

<?php echo CHtml::beginForm('', 'post', array('enctype'=>'multipart/form-data')); ?>


Saludos!
Company web site: pressEnter

Free as in "beer"...
0

#9 User is offline   ygriegaerekao 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 1
  • Joined: 03-September 13

Posted 03 September 2013 - 03:42 PM

Ola comunidad,
quisiera saber como le envio los dos parametros al controller

tengo una funcion json que envia el parametro pero solo acepta que envie un solo parametro (o no se como enviar el otro) y solo tiene que ser un numero no me acepta otro caracter

Me podrian ayudar a enviar los dos parametros juntos


De antemano gracias
0

#10 User is offline   Totto Roncone 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 50
  • Joined: 12-September 13
  • Location:Il piacere - Europe

Posted 03 October 2013 - 07:13 AM

View Postygriegaerekao, on 03 September 2013 - 03:42 PM, said:

Ola comunidad,
quisiera saber como le envio los dos parametros al controller

tengo una funcion json que envia el parametro pero solo acepta que envie un solo parametro (o no se como enviar el otro) y solo tiene que ser un numero no me acepta otro caracter

Me podrian ayudar a enviar los dos parametros juntos


De antemano gracias



Pasar más de una variable desde el controlador a la vista es posible siempre que no confundas las comas.

Un ejemplo sencillo pasar dos variables de tipo array a la vista:

$this->render('magazines', array('files_dir'=> $files, 'files_format'=> $files_format_view))


De los tres parámetros que el método 'render' del controlador de tipo 'Controler' (contenido en la clase 'CControler'), se deben utilizar únicamente los dos primeros. El primero, para indicar la vista, y el segundo, para los datos (data).

class CController extends CBaseController
{
    ...
    public function render($view,$data=null,$return=false)
	{
        ...


El último de los parámetros no se utiliza y por defecto es false.
Thanks!
...Totto...
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users