llce
(Llce05)
June 11, 2012, 3:18pm
1
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))
{
..............
}
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){
//
}
emendezn
(Emendezn)
July 10, 2012, 2:45pm
3
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
JCS
(Darkangel 191)
July 10, 2012, 4:13pm
4
Hola, prueba con esto
<?php
echo CHtml::link(
'Descargar',
Yii::app()->createUrl('tabla1/getTextFile', array('id'=>$id))
);
?>
emendezn
(Emendezn)
July 10, 2012, 8:03pm
5
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…
JaCk0
(Jacko87)
July 11, 2012, 7:12am
6
Si quieres un código iun poco más bonito puedes probar lo siguiente:
echo CHtml::link('Descargar', array('tabla1/getTextFile', 'id'=>$id));
emendezn
(Emendezn)
July 16, 2012, 8:48pm
7
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?
Luciano
(Luciano Baraglia)
July 21, 2012, 4:40am
8
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!
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
ygriegaerekao:
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.