Agrega tu contenido a @yiienespanol !

Tan sencillo como twittear algo, desde tu movil o escritorio

@yiienespanol

Comunidad de Desarrolladores en Yii Framework www.yiiframeworkenespanol.com




  • Juan Rubén Medina Eliett Ir a la Publicación
    Saludos. Estoy teniendo problemas con TbButtonGroup de la extension Yiibooster en dispositivos móviles. Sencillamente los items no responden, pero en la computadora funcionan sin problema. ¿Alguno ha tenido esta situación?

    • Julian Andres Garzon Morales Ir a la Publicación
      Buenos días, tengo el siguiente código
      
       
      $.getJSON('<?php if(isset($data) && is_array($data)) echo $this->createUrl("/reporte/DataInventario/", array("desde"=>$data["desde"], "hasta"=>$data["hasta"])); ?>', function(chartData){ 
      ........
      } 
      pero no hace nada, es decir no me retorna los datos, como prueba de que la acción del controlador esta bien cree un botón que me envía a la acción y si retorna los datos o si pego la url en el navegador también me retorna los datos, usando yii debug tolbar me doy cuenta de que no entra a la acción debido a que no se realiza la consulta a la bd, mi pregunta es como puedo hacer para que me retorne por json los datos, muchas gracias
      • Juan David Rodriguez
        hableme por skype...
      • Julian Andres Garzon Morales
        listo gracias juan

    • Ataur Rahman Ir a la Publicación
      Emmet Rocks :3
      
      Download emmet for Faster coding 
      http://www.tutorialworld.net/download-emmet-faster-coding/
      
      Emmet Cheat sheet for faster Coding 
      http://www.tutorialworld.net/emmet-cheat-sheet-faster-coding/

      • Avraham Jurado Ir a la Publicación
        [ OFF-TOPIC] Tengo un amigo que quiere poner una pagina web de una tienda virtual de insumos informáticos. Me pregunto a mi si se la podia hacer pero por temas de tiempo no le dije que no. Sin embargo, si alguien esta interesado en darle un presupuesto, me dice y lo pongo en contacto. Para que se den una idea de lo que mi amigo necesita les dejo este link http://www.mastersinformatica.com Le mostré esa pagina y me dijo algo asi es lo que el necesita.
        • Jose Luis
          Felipe Eduardo Ortiz López tu vendes de esto :P
        • Hely Miguel Rojas
          listo Avraham Jurado , dale mi contacto !

      • Alejo Peña Ir a la Publicación
        Hola.
        He instalado cruge tal cual como en la documentacion se explica.
        La pregunta es: al momento de crear un rol y darle permisos,¿Por que los permisos no se aplican?
        Es decir yo ya asigne ese rol a un usuario pero en todas las paginas me sale error 403 no autorizado... es decir que no se aplican los permisos..
        ¿Cuales podrian ser las posibles causas?
        • Carlos Belisario
          a ciegas sin ver como lo haces no podemos adivinar, si te da 403 es porque no tiene permiso muestranos el accesRules a ver
        • Alejo Peña
          con CRUGE hay que configurar accesRules?
        • Carlos Belisario
          ¿really? muestra el access rule de tu action que te esta diciendo que no estas autorizado e indicanos el rol que tiene para poder ayudarte
        • Alejo Peña
          Haz usado CRUGE?
        • Carlos Belisario
          Obvio
        • Alejo Peña
          Por eso... me cree un rol desde el  ui de  administracion... asigne permisos y aplique el rol al user... la cosa es que no funciona...
        • Carlos Belisario
          como te indique si el accessRule no le da permiso a ese rol jamás te dejara ingresar al action muesra el accessRule de tu controller y dinos el rol y el action que te da el problema para poder ayudarte, de todas maneras una leída a la doc oficial http://www.yiiframework.com/doc/guide/1.1/es/topics.auth de autenticación no estaría de más
        • Carlos Belisario
          más info http://yiiframeworkenespanol.org/wiki/index.php?title=Cruge#Conviviendo_con_CAccessControl_filter.
        • Alejo Peña
          Es decir que en el accessRule debo especificar los roles y las acciones?
        • Alejo Peña
          Gracias por la ayuda, creo que ya pude... gracias por la ayuda y paciencia.. soy un poco nuevo en yii
        • Alejo Peña
          Una ultima pregunta, como se haria esto:  si usuario permiso action-sis_create?

      • Andres Restrepo Ir a la Publicación
        Hola comunidad Yii, es posible que al ejecutar una consulta a traves de ajax esta me devuelva los datos con el paginador incluido, es decir que me genere un gridview con paginador pero desde un ajax
        alguien tiene algun ejemplo de esto ?
        muchas gracias :)
        • Esteban Adrián P
          La respuesta corta es:
          - Que el ajax llame al action que genera la grilla (admin, si no "tuneaste" tu desarrollo)
          - Que el action detecte que es una llamada "ajax" (fijate como se resuelve en actionDelete)
          - El action retorna un "renderPartial" de la grilla, pero con el parámetro "return" en verdadero (http://www.yiiframework.com/doc/api/1.1/CController#renderPartial-detail)
          - El "ajax" cambia el contenido del div con lo que le envía el action...
        • Andres Restrepo
          Una pregunta estaban como se pueden tunear las peticiones ajax para que san seguras ya que mencionaste el tema gracias :)
        • Esteban Adrián P
          No es mi fuerte el tema "seguridad"... Ivan y Christian son los más "perseguidos" con ese tema... Pero deberías ser muy preciso en lo que querés averiguar :D
        • Ivan Salomon
          Andres explica un poco mejor. Pero del vamos te digo que sean peticiones ajax o la que sea tienen que ser seguras a nivel de protocolo, en este caso httpS . Se entiende?

      • Alex Mikel Alba Ir a la Publicación
        holas a todos ,talves alguien a utilizado en sus sistemas lector d codigo d barras , si alguien podria ayudar alguna extencion q utilizaron
        • William Quitian
          Solo se necesita una caja de texto para leer código de barras
        • YonHaime Rocha
          Es sólo un código generado que guardas como String
        • Alex Mikel Alba
          gracias ... es q como nunca e utilizado en una aplicacion web X eso lo decia nada mas

      • Kristhian E Figueroa Ir a la Publicación
        Algún freelance, interesado en hacer proyecto? aprox un mes de desarrollo.
        • Albert Medina
          sobre que?
        • Oscar Bravo
          ¿Sobre qué?
        • Felipe Eduardo Ortiz López
          Jose Luis, creo quet llaman...
        • Juan Cortes
          Pues a mi me interesaria,
        • Kristhian E Figueroa
          Les suplico sea por inbox.
        • Kristhian E Figueroa
          Olvidé mencionar, de preferencia en Querétaro, México. o en México. por la cuestión fiscal.
        • Alex Ferreras
          Si yo quiero =D ...
        • Alex Ferreras
          ferrerasalexander@gmail.com
        • Josh Zarate Parker
          ke hay ke hacer
        • Kelvin Jonathan Díaz
          Hola soy de Caracas - Venezuela estoy interesado escribeme el mp
        • Kelvin Jonathan Díaz
          Me podrías cancelar con gif card

      • Daniel Caller Ir a la Publicación
        Buenas...una consulta cómo puedo filtrar los valores NULL o cadena vacía desde el cgridview? por ejemplo tengo un gridview donde muestro montos y algunas filas no tienen esos montos, y los relleno con ceros pero al ser el filtrado por ejemplo < 10 no me muestran las filas que tienen los "ceros".
        Saludos!
        • William Quitian
          Los 0s están grabados en la bd?
        • Juan Rubén Medina Eliett
          Quizas la función scope del modelo sea de ayuda.. pero es importante saber qué estas guardando en ese campo de la base de datos
        • Carlos Belisario
          null no es tomado como un numero, simplemente agrega en el filtro de < a 10 que también traiga los nulos
        • Daniel Caller
          En realidad son datos calculados que los traigo a través de una vista en la BD... la consulta no arroja ceros, arroja nulos... pero para mostrar cambio el null por cero... algo leí que tengo que modificar el criteria... pero cómo? se supone que el filtro del gridview acepta <, > y demás osea el usuario pone 0, en el criteria tendría que hacer un if si cuando pone 0 se interprete como null, pero si el usuario pone < 10, < 2 , cómo hago para que también traiga los nulos?

      • Christian Salazar Ir a la Publicación
        [PRUEBA]
        • Christian Salazar
          <script>alert('este mensaje no deberia salir en el website');</script>
        • Esteban Adrián P
          ¿?
        • Christian Salazar
          un bug en el website que admite la ejecucion de scripts de javascript como este en el yiies,
        • Christian Salazar
          listo resuelto.
        • Christian Salazar
          prueba2:
          
          <script>alert('este mensaje tampoco deberia salir en el website');</script>
        • Christian Salazar
          verificado. bug resuelto.
        • Cesar Gago Egocheaga
          XSS :o
        • Christian Salazar
          no no tanto. era una tonteria.

      • Ivan Salomon Ir a la Publicación
        [IMPORTANTE] Publicada Guía del Desarrollador OWASP v4 - Para los que trabajamos asegurando aplicaciones web, sin duda... http://t.co/mLY29rW1tw

        • Alejo Peña Ir a la Publicación
          hola.
          Como puedo traer datos de diferentas tablas desde un mismo modelo?
          • Albert Medina
            <?php echo $model->objetoDelaTabla;?>
          • Josh Zarate Parker
            Para ke necesitas eso???
          • Daniel Caller
            Sé más específico... si las tablas están relacionadas las puedes traer mediante $modelo->Relacion->atributodeOtromodelo... si no están relacionadas puedes usar el comando $modelo->findAllBySql($miconsultasql, $arraydeparametros)
          • Carlos Belisario
            este tipo de dudas se resuelve leyendo la doc oficial http://www.yiiframework.com/doc/guide/1.1/es/database.arr te aseguro que ahí encuentras lo que necesitas
          • Christian Salazar
            problema de conceptos:
            
            un modelo, implica el uso de varios sistemas o piezas. ahora, que llamen "modelo" a una tabla, es un grave error.  
            
            lo que Alejo pregunta es: "como puedo leer datos de varias -tablas- en un mismo formulario", cosa con describe mal al usar mal los conceptos y gracias a confundir "tabla" con "modelo".
            
            y en respuesta a la pregunta lee cuidadosamente esto (y josh tambien):
            
            http://www.yiiframeworkenespanol.com/post/como-crear-multiples-objetos-en-una-sola-sin/mybb/713
          • Daniel Caller
            Bueno si es como Christian dice entonces, debes crearte un modelo que extienda de CFormModel y declararle los atributos y métodos que necesites... 
            http://www.yiiframework.com/doc/guide/1.1/es/form.model

        • Andres Restrepo Ir a la Publicación
          hola tengo un modelo de usuario donde registro sus datos con su clave de acceso, ahora este usuario no debe actualizar su propia clave y para tal motivo 
          no muestro los campos de clave cuando se edita el registro pero si trato de guardar yii sigue preguntando por esos campos dado que estan en la validacion 
          del modelo del usuario, entonces como puedo indicarle a yii que cuando estoy en el update no me pregunte por la validacion de esos campos que ya no estoy 
          mostrando
          
          muchas gracias
          • Carlos Belisario
            Buenas, eso que quieres hacer se maneja con escenarios
            http://www.yiiframework.com/wiki/266/understanding-scenarios/
            
            al agarrarle el hilo seguro que lo logras, cualquier duda nos indicas
          • Botia Julian
            Me imaginó que en el update haces un find, el campo contraseña debería venir seteado y ahí no habría ningún problema. Sin embargo la solución de escenarios es muy buena solucion
          • Andres Restrepo
            Lo voy a verificar muchas gracias por los aportes

        • Albert Medina Ir a la Publicación
          Buenos días, les presento el siguiente problema que surgió de imprevisto cuando todo estaba funcionando a la perfección en el sistema. En este punto hay un script---> 
          
          <script type="text/javascript">
          $(document).ready(function() {
           var value = "<?php echo $model->rubrosSum?>";
           if(value<14){
           $('#BaremosSolicitudes_resultado_baremo_0').attr('disabled', true);
           $('#BaremosSolicitudes_resultado_baremo_1').attr('disabled', true);
           $('#BaremosSolicitudes_resultado_baremo_2').attr('disabled', true);
           }else{
           $('#BaremosSolicitudes_resultado_baremo_0').attr('disabled', false);
           $('#BaremosSolicitudes_resultado_baremo_1').attr('disabled', false);
           $('#BaremosSolicitudes_resultado_baremo_2').attr('disabled', false);
           }}); 
          
          </script>
          
          Este valida un radio button, pero ahora no me levanta un el modal para agragar porque no esta definida $model->rubrosSum y dicha variable esta funcional en este modelo, al momento de quitar el script el problema desaparece. Agradecería su ayuda.
          • Albert Medina
          • Juan Tierra
            Ya verificaste la sintaxis de rubrosSum este exactamente así en el modelo BaremosRubros, porque si trabajas en linux es sensible a mayúsculas  y minusculas
          • Albert Medina
            No, el servidor es windows, y esa variable esta funcionando perfectamente desde hace tiempo, de hecho lo utilizo para hacer ciertos reportes en pdf y excel, lo que me indica es un problema en el script
          • Dan Royus
            Parece claro que esa variable no la tienes definida, al menos en ese escenario ;)
            
            Eso o como te indican... caseSensitive ;)
          • Albert Medina
            Existe una relación entre ambos modelos y justo sobre esa variable, en un principio no tenia problemas para validar y levantar el modal
          • Albert Medina
            Resuelto amigos, gracias por la ayuda.
          • Dan Royus
            Ahora di que pasaba hombre :D
          • Albert Medina
            Este modelo era del modal, el modelo del formulario es otro parecido, moví el script al otro formulario y asunto arreglado, me pase de bestia al invocar el script desde allí, en un principio lo tenía desde otro modelo y no se que lapsus me dio que lo moví y no recordaba.
          • Dan Royus
            Es decir, que esa propiedad no existía ;)
          • Albert Medina
            Duplicaba la función del script y reventaba todo, lo podría hacer desde este form pero no tendria sentido alguno

        • Christian Salazar Ir a la Publicación
          [DISCULPAS PIDO]  por unos tweets personales que salen hacia la cuenta twitter @yiienespanol, no se cual setting es el que esta tomando publicaciones de un muro de FB y los lleva a esta cuenta de TW...pronto se resolvera.
          • Christian Salazar
            resuelto.

        • Figueroa Sosa Ir a la Publicación
          Alguien puede ayudarme a realizar consultas  en yii..
          • Robson TI
            yes
          • Figueroa Sosa
            como ? :D
          • Robson TI
            Oq você precisa gerar?
          • Figueroa Sosa
            Quiero consultar los datos almacenados en una tabla
          • Robson TI
            show exemple
          • Albert Medina
            explica que quieres consultar y has preguntas con fundamentos
          • Carlos Belisario
            Lee los conceptos y seguro se te hará simple el encontrar tu respuesta
            http://www.yiiframework.com/doc/guide/1.1/es/database.overview
          • Esteban Adrián P
            Concentrate en los métodos "actionIndex" y "actionAdmin" y sus vistas... No es tan complejo, de veras te digo :)
          • Andrés Ubilla
            Esto es querer que hagan todo por ti, queda claro que no has leído nada de la documentación de Yii.

        • Marina Isolda Ir a la Publicación
          Hola estoy comenzando con yii y tengo un problema al cargar los datos a un cgridview, aparece este msj de error. Alguien sabe por que ocurre?
          • Fredy Balaguera
            Hola, normalmente se trata de los nombres de los campos o variables, necesitaríamos ver cómo tienes el código, pero por lo pronto, revisa el #7 donde dice unknown items
          • Christian Salazar
            es un problema en la forma como declaraste alguna expresion usada en alguna columna del CGridView.  deduzco debido al error de "opcode"...nada mas puedo adivinar eso, no saques fotos del stacktrace, copia y pega el stacktrace porque eso ayuda a saber de donde provino el error.
          • Marina Isolda
            PHP notice
            
            Undefined offset: 0
            
            C:\xampp\htdocs\redesceba\yii\framework\base\CComponent.php(606) : eval()'d code(1)
            
            Stack Trace
            #0 
            +  C:\xampp\htdocs\redesceba\yii\framework\base\CComponent.php(606): eval()
            #1 
            +  C:\xampp\htdocs\redesceba\yii\framework\zii\widgets\grid\CDataColumn.php(131): CComponent->evaluateExpression("substr($data->conceptosCotizacions[0]->descripcion,0,30)", array("data" => Cotizacion, "row" => 2))
            #2 
            +  C:\xampp\htdocs\redesceba\yii\framework\zii\widgets\grid\CGridColumn.php(144): CDataColumn->renderDataCellContent(2, Cotizacion)
            #3 
            +  C:\xampp\htdocs\redesceba\yii\framework\zii\widgets\grid\CGridView.php(589): CGridColumn->renderDataCell(2)
            #4 
            +  C:\xampp\htdocs\redesceba\yii\framework\zii\widgets\grid\CGridView.php(545): CGridView->renderTableRow(2)
            #5 
            +  C:\xampp\htdocs\redesceba\yii\framework\zii\widgets\grid\CGridView.php(455): CGridView->renderTableBody()
            #6 
            +  C:\xampp\htdocs\redesceba\yii\framework\zii\widgets\CBaseListView.php(160): CGridView->renderItems()
            #7 
             unknown(0): CBaseListView->renderSection(array("{items}", "items"))
            #8 
            +  C:\xampp\htdocs\redesceba\yii\framework\zii\widgets\CBaseListView.php(143): preg_replace_callback("/{(\w+)}/", array(CGridView, "renderSection"), "{summary} {items} {pager}")
            #9 
            +  C:\xampp\htdocs\redesceba\yii\framework\zii\widgets\CBaseListView.php(128): CBaseListView->renderContent()
            #10 
            +  C:\xampp\htdocs\redesceba\yii\framework\web\CBaseController.php(173): CBaseListView->run()
            #11 
            –  C:\xampp\htdocs\redesceba\sis.adm\protected\views\cotizacion\admin.php(129): CBaseController->widget("zii.widgets.grid.CGridView", array("id" => "cotizacion-grid", "dataProvider" => CActiveDataProvider, "itemsCssClass" => "table table-striped table-bordered table-hover", "enablePagination" => true, ...))
            124                         'imageUrl' => Yii::app()->request->baseUrl . '/img/icons/file.png',
            125                     ),
            126                 ),
            127             ),
            128         ),
            129     )); ?>
            130 </div>
            131 <?php $this->endWidget();?>
            132                             
            133                             
            #12 
            +  C:\xampp\htdocs\redesceba\yii\framework\web\CBaseController.php(126): require("C:\xampp\htdocs\redesceba\sis.adm\protected\views\cotizacion\adm...")
            #13 
            +  C:\xampp\htdocs\redesceba\yii\framework\web\CBaseController.php(95): CBaseController->renderInternal("C:\xampp\htdocs\redesceba\sis.adm\protected\views\cotizacion\adm...", array("model" => Cotizacion), true)
            #14 
            +  C:\xampp\htdocs\redesceba\yii\framework\web\CController.php(869): CBaseController->renderFile("C:\xampp\htdocs\redesceba\sis.adm\protected\views\cotizacion\adm...", array("model" => Cotizacion), true)
            #15 
            +  C:\xampp\htdocs\redesceba\yii\framework\web\CController.php(782): CController->renderPartial("admin", array("model" => Cotizacion), true)
            #16 
            –  C:\xampp\htdocs\redesceba\sis.adm\protected\controllers\CotizacionController.php(574): CController->render("admin", array("model" => Cotizacion))
            569         if (isset($_GET['Cotizacion']))
            570             $model->attributes = $_GET['Cotizacion'];
            571 
            572         $this->render('admin', array(
            573             'model' => $model,
            574         ));
            575     }
            576 
            577     /*public function actionAdminBp()
            578     {
            579         $this->validarSession();
            #17 
            +  C:\xampp\htdocs\redesceba\yii\framework\web\actions\CInlineAction.php(49): CotizacionController->actionAdmin()
            #18 
            +  C:\xampp\htdocs\redesceba\yii\framework\web\CController.php(308): CInlineAction->runWithParams(array())
            #19 
            +  C:\xampp\htdocs\redesceba\yii\framework\web\filters\CFilterChain.php(133): CController->runAction(CInlineAction)
            #20 
            +  C:\xampp\htdocs\redesceba\yii\framework\web\filters\CFilter.php(40): CFilterChain->run()
            #21 
            +  C:\xampp\htdocs\redesceba\yii\framework\web\CController.php(1145): CFilter->filter(CFilterChain)
            #22 
            +  C:\xampp\htdocs\redesceba\yii\framework\web\filters\CInlineFilter.php(58): CController->filterAccessControl(CFilterChain)
            #23 
            +  C:\xampp\htdocs\redesceba\yii\framework\web\filters\CFilterChain.php(130): CInlineFilter->filter(CFilterChain)
            #24 
            +  C:\xampp\htdocs\redesceba\yii\framework\web\CController.php(291): CFilterChain->run()
            #25 
            +  C:\xampp\htdocs\redesceba\yii\framework\web\CController.php(265): CController->runActionWithFilters(CInlineAction, array("accessControl", "postOnly + delete"))
            #26 
            +  C:\xampp\htdocs\redesceba\yii\framework\web\CWebApplication.php(282): CController->run("admin")
            #27 
            +  C:\xampp\htdocs\redesceba\yii\framework\web\CWebApplication.php(141): CWebApplication->runController("cotizacion/admin")
            #28 
            +  C:\xampp\htdocs\redesceba\yii\framework\base\CApplication.php(169): CWebApplication->processRequest()
            #29 
            –  C:\xampp\htdocs\redesceba\sis.adm\index.php(13): CApplication->run()
            08 defined('YII_DEBUG') or define('YII_DEBUG',true);
            09 // specify how many levels of call stack should be shown in each log message
            10 defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);
            11 
            12 require_once($yii);
            13 Yii::createWebApplication($config)->run();
          • Marina Isolda
            ok revisare la linea 7, es que mi problema es que aparte de que estoy comenzando con yii
          • Christian Salazar
            ves q es mas facil ?  el error esta en esta expresion:
            
            CComponent->evaluateExpression("substr($data->conceptosCotizacions[0]->descripcion,0,30)", array("data" => Cotizacion, "row" => 2))
          • Christian Salazar
            por ejemplo, supon que una columna quiere esto de un "modelo" llamado Cliente:
            
            array("name"=>"username")   
            // por defecto imprimirá: "csalazar", pero quieres que diga: "Christian Salazar, Asesor de Sistemas"
            
            entonces, en vez de hacer:
            array("name"=>"username", "value"=>"$data->nombre.\" \".$data->apellido.\" \"....blablabla").....(tipos de expresiones "inline" que causan errores de opcode como el tuyo con facilidad extrema)
            
            entonces haces:
            array("name"=>"friendlyusername"),
            
            en consecuencia veras que "Cliente.friendlyusername" NO EXISTE en tu tabla manejada por el modelo Cliente, pero, para eso usas un MagickGetter:
            
            
            // Cliente.php
            class Cliente extends CActiveRecord {
               ..
               public function getFriendlyUserName(){
                   return sprintf("%s %s (%s)", $this->nombre, $this->apellido,$this->cargo);
               }
            }
            
          • Marina Isolda
            <div id="gridctizacionap">
                <?php $this->widget('zii.widgets.grid.CGridView', array(
                    'id'=>'cotizacion-grid',
                    'dataProvider'=>$model->search(2),
                    'itemsCssClass'=>'table table-striped table-bordered table-hover',
                    //'filter'=>$model,
                    'enablePagination' => true,
             'pager'=>'LinkPager',//anulando la clase ClinkPager default
             'pagerCssClass'=>' pager pagination',
                    'columns'=>array(
                        array(
                            'name'=>'',
                            'header'=>'Empresa',
                            'value'=>'$data->idCliente->idEmpresa->razon_social',
                        ),
                        array(
                            'name'=>'',
                            'header'=>'Contacto',
                            'value'=>'$data->idCliente->nombre." ".$data->idCliente->apellidos'
                        ),
                        array(
                            'name'=>'',
                            'header'=>'Cotización',
                            'value'=>'$data->no_cotizacion',
                        ),
                        array(
                            'name' => '',
                            'header' => 'Partida',
                            'type'=>'raw',
                            'value' => 'substr($data->conceptosCotizacions[0]->descripcion,0,30)'
                        ),
                        array(
                            'name' => '',
                            'header' => 'Cantidad',
                            'type'=>'raw',
                            //'value' => '$data->idCliente->id_usuario=='.Yii::app()->user->id.'?$data->id_banco==1?($data->total+($data->total*0.16)):$data->total:0',
                            'value'=>'number_format($data->obtencionTotal(),2)',
                        ),
                        array(
                            'class' => 'CButtonColumn',
                            'template' => ' {pdf} {enviar} {envia} {copiar} {datosficales}',
                            'buttons' => array(
                                'pdf' => array(
                                    'label' => 'Pdf',
                                    'url' => "CHtml::normalizeUrl(array('verPdf', 'id'=>\$data->id_cotizacion))",
                                    'imageUrl' => Yii::app()->request->baseUrl . '/img/icons/search.png',
                                ),
                                'enviar' => array(
                                    'label' => 'Enviar Cotizacion',
                                    'url' => "CHtml::normalizeUrl(array('preEnviarCotizacion', 'id'=>\$data->id_cotizacion))",
                                    'imageUrl' => Yii::app()->request->baseUrl . '/img/icons/mailrojo.png',
                                    'options' => array('class' => 'pdf'),
                                    'visible'=>'$data->envio_cotizacion != 1',
                                ),
                                'envia' => array(
                                    'label' => 'Enviar Cotizacion',
                                    'url' => "CHtml::normalizeUrl(array('preEnviarCotizacion', 'id'=>\$data->id_cotizacion))",
                                    'imageUrl' => Yii::app()->request->baseUrl . '/img/icons/mailverde.png',
                                    'options' => array('class' => 'pdf'),
                                    'visible'=>'$data->envio_cotizacion == 1',
                                ),
                                'copiar' => array(
                                    'label' => 'Copiar cotizacion',
                                    'url' => "CHtml::normalizeUrl(array('copiarCotizacion', 'id'=>\$data->id_cotizacion))",
                                    'imageUrl' => Yii::app()->request->baseUrl . '/img/icons/text.png',
                                    'options' => array('class' => 'pdf'),
                                ),
                                'datosficales' => array(
                                    'label' => 'Enviar datos fiscales',
                                    'url' => "CHtml::normalizeUrl(array('/datosFiscales/envioDatosFiscales', 'id'=>\$data->id_cotizacion))",
                                    'imageUrl' => Yii::app()->request->baseUrl . '/img/icons/file.png',
                                ),
                            ),
                        ),
                    ),
                )); ?>
          • Marina Isolda
            ese es mi data grid
          • Marina Isolda
            y tengo otros 4 con el mismo codigo y no me han dado problemas
          • Marina Isolda
            la cuestion es que yo no diseñe la aplicacion unicamente mi trabajo es modificarla, y entonces cuando migre la aplicacion a mi servidor local, ese fue el unico problema con el que me encontre

        • Julian Andres Garzon Morales Ir a la Publicación
          Buenas noches estoy trabajando con highcharts, estoy haciendo una gráfica combinada, no se como crear las series por medio de JSON intente algo así pero la gráfica aparece en blanco
          
          'series' => array( $this->createUrl('reporte/getDataInventario')),
          y en la accion getDataInventario
          $data = array();
          foreach($inventario as $evento){
           $data[] = array(
                     'type'=>'column',
                     'name'=>$evento['nombre'],
                     'data'=> array($evento['cantidad']),
           );
          } 
          echo CJSON::encode($data);
          Yii::app()->end();
          
          Si alguien puede ayudarme lo agradezco infinitamente o si tienen algun codigo o pagina donde pueda investigar como hacerlo, buena noche
          • Jhon J Toloza
            http://www.highcharts.com/ supongo que usa estos highcharts ? si es asi ahi esta la pagina basicamente se trata de un <div id="chart"></div> luego un script que empieza asi $(function () {
                $('#chart').highcharts({ ... y la libreria claro .... puede ver la api y hasta ejemplos de como funciona en la pagina para mas info aqui un ejemplo ...
          • Jhon J Toloza
            http://jsfiddle.net/gh/get/jquery/1.9.1/highslide-software/highcharts.com/tree/master/samples/highcharts/demo/line-basic/
          • Jhon J Toloza
            lo que debe ud hacer es construir este script dinamicamente con php y luego registrarlo en la pagina y listo ...
          • Julian Andres Garzon Morales
            muchas gracias por responder, ya he hecho varias gráficas dinamicamente pero son de tipo pie, pero en la que tengo problemas es una gráfica combinada de tipo pie y column pero ya encontré un ejemplo de como hacerlo, voy a probar si así me funciona  dejo el enlace por si a alguien mas le interesa el articulo. :D http://www.ponomaryov.org/yii-tutorials/handling-statistics-pulling-data-from-yii-and-displaying-with-highcharts/
          • Jhon J Toloza
            bueno el tutorial esta bien aunque, lo que mas importa es como se contruye el script, en tutorial se muestra xAxis: {
            categories: json.dates
            }, donde json.dates viene siendo algo como ... categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
                            'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
          • Julian Andres Garzon Morales
            correcto yo consulto la base de datos y creo el array con los datos el problema estaba en que yo pretendia que con esta linea de codigo se crearan las series 'series' => array( $this->createUrl('reporte/getDataInventario')), debido a que no se puede hacer un foreach dentro del widget por que me genera error, lo que no sabia era que se podia crear un script para generar los datos, la verdad es que soy muy novato en yii y me cuesta bastante entender la estructuras de los codigos :)

        • Ivan Salomon Ir a la Publicación
          [CONSULTA POPULAR] Amigos alguien ha utilizado YiiBoilerplate?
          el que lo uso, que le parece?
          Dejo el link para los que NO lo conocen. Saludos
          https://github.com/clevertech/yiiboilerplate#yiiboilerplate
          • Esteban Adrián P
            [OFF TOPIC]
            http://www.slacktory.com/wp-content/uploads/2012/11/memes-in-commercials-aliens-guy-Alienware-ad.jpg
          • Ivan Salomon
            Troll !!! :P
          • Esteban Adrián P
            3:)
          • Julian Calvo
            Lo use y esta bien, pero opte por el yiistrap.
          • Ivan Salomon
            Hola Julian . Creo que te confundes con el yiibooster. Esto es otra cosa ;)
          • Julian Calvo
            Teienes razon, estabe refiriendome unicamente al aspecto de integracion con el twitter bootstrap.
          • Ivan Salomon
            Abrazos

        • Sergio Cabrera Ir a la Publicación
          Curso de Frondtend Mejorandola
          http://sh.st/yex66

          • Alejo Peña Ir a la Publicación
            Como puedo hacer un panel de administracion con checking de permisos?
            • Juan Rubén Medina Eliett
              cruge
            • Alejandro Benavides
              Te recomiendo investigues sobre RBAC si lo que quieres es tener roles y otorgar permisos
            • Ivan Salomon
              Cruge
            • Christian Salazar
              cruge o rights, 
              cruge trae la UI para hacerlo en linea,

          • Lesther Peña Ir a la Publicación
            Buenas tengo un formulario de multiples modelos y por medio de un archivo js que diseñe muestro el modelo que necesito llenar segun la opción que elija del select
            el select es de dos opciones
            Copia dura 
            Electronico
            mi pregunta si existe una forma que de acuerdo a lo que eliga los modelos que permanecen ocultos no se envien ya que no me interesa que se cargue datos en sus tablas con columnas vacias lo ideal es que logre enviar lo que necesito nada mas
            • William Quitian
              Podría eliminar el attribute name de cada input al momento de ocultar el campo, esto se podría hacer con jquery
            • Lesther Peña
              willian yo use el metodo o la funcion de remover el dato que esta oculto y no me funciono por que al eliminarlo no se manda lo que llene a la tabla tengo como 6 dias enfrascado en como seria la opcion que me dices
            • William Quitian
              Envía el código que estas utilizando
            • Recursos Formacion
              Dejando aparte otras opciones, suponiendo que envies la opcion del formulario elegido, porque no controlas la carga en PHP directamente?
            • Lesther Peña
              por que no supe donde debia colocar la funcion y como yii tiene la bondad que puedes crear un archivo js y lo puedes llamar pero si me puedes orientar como se hace por php. Es bueno tener conocimientos de varias opciones
            • Recursos Formacion
              el js lo sigues utilizando para que seleccione el formulario adecuado, pero a partir de ahi, puedes seleccionar distintos formularios enteros, o un unico formulario, seleccionando campos
              
              Cuando vuelves a PHP, en el controlador, preguntas que formulario has recibido, si son distintos formularios, o si es uno solo, compruebas el campo que utilizaste en javascript para hacer la seleccion, y manejas los campos adecuados en funcion de dicho valor
            • Miguel Jaimes
              Hay programadores que ocultan los campos dependiendo las opciones que elija el usuario, pero si te fijas bien alguien podrian romper estas validaciones desde el navegador, Podrias trabajarlo con Ajax dependiendo la opción que elija el usuario renderizas la vista en un Div en la controladora recibes con un $_POST y dependiendo el tipo muestra esto o lo otro. Ejemplo : $form->dropDownList($model, 'fk_tipo', CHtml::listData(Tabla::model()->findAll(array('condition' => 'id_tabla', 'order' => 'descripcion ASC')), 'id_tabla', 'descripcion'), array('empty' => 'Seleccione..', 'title' => 'Seleccione..',
                          'ajax' => array(
                              'type' => 'POST',
                              'url' => CController::createUrl('/Controlador/accion'),
                              'data' => array("'id_tabla" => "js:this.value",'ValorSelect' => 'js:$("input:radio[name=fk_condicion]:checked").val()',),
                              'beforeSend' => 'js:function(data){  //aca yo limpio Mis Campos o declaras valores que quieren que se ejecuten algo
                      }',
                              'success' => 'function(data) {
              //aca Traigo el formulario o la vista y lo cargo en un Div
                                                    $("#contenido").html(data);
                                                                              
                                              }',
                              'error' => 'function(){alert("Ocurrio un Error en su solicitud !");}',
                          )), array('class' => 'span6'));
            • Francisco Martinsky
              arma los formularios  en diferentes vistas y en tu principal  los llamas  con un renderpatrial segun tu opcion del select . Así lo hago yo.  O  también puedes hacerlo por ajax, cargas el formulario segun tu opcion y al hacer submit llamas a la funcion que le corresponda. cada uno.
            • Daniel Caller
              Me parece más lógico que cargues los formularios mediante Ajax

          • Sergio Cabrera Ir a la Publicación
            Cursos de Capacity
            http://sh.st/y0jta
            • Robson TI
              password please ..
            • Javier Lema
              El enlace no funciona :(
            • Sergio Cabrera
              El enlace si esta funcionando ahorita pude probar.

          • Jose Luis Ir a la Publicación
            Hola, buen día, para quienes usaron CRUGE y tuvieron el requerimiento que no se desconectara la sesión, sino que sólo si había inactividad por parte del usuario, cómo lo solucionaron?
            • Arley Romero
              En algún momento me enfrente a este caso, la solución fue reiniciar el tiempo de sesión cada vez que el usuario realizará alguna acción en la página, para esto modifique la función beforeaction del CController. 
              Nota: Con esta modificación el generador Gii deja de funcionar;  Christian Salazar  en algun momento explicaba los pros y los contras de modificar esta funcionalidad.
            • Jose Luis
              Podrías pasarme el código para que vea? aprovechando, te ha pasado que la sesión aún tiene tiempo de vida, pero por alguna razón (que aún ando revisando) se desconecta y queda activo el usuario invitado? Hay personas que se loggean, y unos 10min después sucede la desconexión, no es que sea asi en todo momento, sino que pasa, otras veces, después de unas horas, he notado que no dan loggout, sino que cierran la pestaña y la sesión queda activa, entonces cuando se loggean de nuevo, se "reabre" la que tenían, pero no se si por ahi esté dando lata algo.
            • Arley Romero
              Ya te colaboro con el código, lo de la sesión si me ha pasado pero me canse de buscar la causa y me decante por errores en conectividad.
            • Jose Luis
              mmmmm y cómo lo solicionaste o qué hiciste, es decir, tampoco puedo decirle al usuario que es por su red y que se va a estar desconectando :P  jajajajaj
            • Arley Romero
              public function beforeAction($action) {
                      //Yii::log(__METHOD__ . ' isGuest: ' . (Yii::app()->getUser()->isGuest ? 'Si' : 'No'));
                      // Cada vez que se ejecuta una acción se actualiza el tiempo de expiración
                      // TODO: integrar con cruge o mejorar
                      $sys = Yii::app()->user->um->getDefaultSystem();
                      $duration = $sys->getn('sessionmaxdurationmins');
                      // Encuentra la última sesión y actualiza la fecha de expiración
                      $model = CrugeSession::model()->findLast(Yii::app()->user->id);
                      if ($model != null) {
                          $model->expire = CrugeUtil::makeExpirationDateTime($duration);
                          $model->save();
                      }
                      return true;
                  }
            • Arley Romero
              en el archivo...framework/web/ccontroller.php
            • Arley Romero
              pruebalo y me cuentas
            • Jose Luis
              Gracias Arley Romero, lo implemento y te digo. Gracias
            • Ariel Richard Condori Rodriguez
              Un plan b, alguna vez lo hice de esta forma, agregar este codigo a views/layouts/main.php   
              
              <script type="text/javascript">
                          var tstampActual = 0;
                          var comprobar = 300000; //60*5= 300000 = 5 minutos
              
                          function actividad() {
              
                              var tstamp = new Date().getTime();
              
                              if (Math.abs(tstampActual - tstamp) > comprobar) {
                                       alert("Se detecto inactividad en la aplicacion, por seguridad ingrese nuevamente. Gracias");
                                       window.location = '<?php echo yii::app()->baseurl?>'+'/index.php?r=site/logout';
                              } 
                          }
                          window.addEventListener('load', function() {
                              document.body.addEventListener('mousemove', function() {
                                  tstampActual = new Date().getTime();
                              }, false);
                              setInterval(function() {actividad()}, comprobar);
                          });
              </script>
            • Christian Salazar
              no es cruge...es de Yii.
            • Christian Salazar
              y hay varios casos de ejemplo (2 o 3) en el foro (donde solo los valientes buscan).    No es cruge, es yii, por qué ? porque el dueño de la autentiaccion es yii, cruge solo gestiona en alto nivel, puden hacer un script ajax que diga si la sesion cliente murió y por tanto hacer algo del lado cliente...nada complicado.
            • Ariel Richard Condori Rodriguez
              mi estimado Christian Salazar  el código que comparto es parte de Yii sólo que se aumenta javascript
            • Ariel Richard Condori Rodriguez
              window.location = '<?php echo yii::app()->baseurl?>'+'/index.php?r=site/logout';  donde accemos a logout termina la "session"
            • Christian Salazar
              no lo he visto, solo te comento que hay varios casos en el foro..
            • Ariel Richard Condori Rodriguez
              Comparto nuevamente el código para todos, sólo es agregar este codigo en views/layouts/main.php :
              
              <script type="text/javascript">
              var tstampActual = 0;
              var comprobar = 300000; //60*5= 300000 = 5 minutos
              
              function actividad() {
              
              var tstamp = new Date().getTime();
              
              if (Math.abs(tstampActual - tstamp) > comprobar) {
              alert("Se detecto inactividad en la aplicacion, por seguridad ingrese nuevamente. Gracias");
              window.location = '<?php echo yii::app()->baseurl?>'+'/index.php?r=site/logout';
              }
              }
              window.addEventListener('load', function() {
              document.body.addEventListener('mousemove', function() {
              tstampActual = new Date().getTime();
              }, false);
              setInterval(function() {actividad()}, comprobar);
              });
              </script>
            • Christian Salazar
              repito lo que puse en el foro en algun momento:
              en el lado cliente hay que insertar un script al final, que incruste una llamada ajax, esta llamando a un action, y, devolviendo este el numero de sesion (oculto, enmascarado, boolean como sea), si ese numero se vuelve "false" entonces, tambien será "false" cuando un action normal quiera acceder a funciones protegidas para usuarios autorizador, por tanto asi se sabe si del lado cliente la sesion expiro.  Ese ajax, cuando detecte un "false", entonces toma acciones: hace un redirect a pantalla de login, o pone una nota en la cabecera, etc.
            • Christian Salazar
              tu script esta orientado a "actividad del usuario", pero no a "actividad de la sesion", seria bueno combinar...y hacer una extensión. eso ayudaría.
            • Dan Royus
              No creo que modificar el core de Yii sea la solución Ariel Richard Condori Rodriguez, más bien todo lo contrario ;)
            • Christian Salazar
              se me ocurren unas 10 vias para hacerlo sin alterar el core...el 90% de ellas basadas en el temido, olvidado, desconocido: override.
            • Dan Royus
              HAhahaha, como me gusta la ironía.... :D
            • Ariel Richard Condori Rodriguez
              estimado Dan Royus, "Mucho ruido y pocas nueces", no veo tu solición, encantado por verlo.
            • Christian Salazar
              bueno vamos al punto, y para ayudar a Arley Romero, quien fue el promotor de la idea de alterar CController. (no fue Ariel Richard Condori Rodriguez) :
              
              1. si miras mas allá, verás que la aplicación por defecto que se te da tiene un componente llamado Controller.php, que extiende de CController. No está ahi de adorno.
              
              2. Todas tus controladoras "Deben" derivar de esa controladora Controller.php 
              
              [php]
               // gii lo hace por ti, 
              class SiteController extends Controller {  ... 
              [/php]
              
              3. si se necesita algo extra como ejemplo insertar un script en todas las paginas (el script de Ariel Richard), entonces, se hace "override" del metodo beforeAction: En "tuapp/components/Controller.php".....no en CController.
              
              4. entonces, toda controladora que tengas hara uso de ese script.
              
              5. Y el script se inserta asi:
              
              [php]
              class Controller extends CController {
              
              public function verificadorSesion($login_url){
              Yii::app()->getClientScript()->registerScript(
              "verificador_sesion_script_id",
              "
              var tstampActual = 0;
              var comprobar = 300000; //60*5= 300000 = 5 minutos
              function actividad() {
              var tstamp = new Date().getTime();
              if (Math.abs(tstampActual - tstamp) > comprobar) {
              alert("Se detecto inactividad en la aplicacion, por seguridad ingrese nuevamente. Gracias");
              window.location = '{$login_url}'}}
              window.addEventListener('load', function() {
              document.body.addEventListener('mousemove', function() {
              tstampActual = new Date().getTime();
              }, false);
              setInterval(function() {actividad()}, comprobar);
              });
              ",CClientScript::POS_LOAD);
              }
              
              public function beforeAction($norecuerdocual){
                  $this->verificadorSesion(CHtml::normalizeUrl(array("/site/login")));
                  parent::beforeAction($norecuerdocual);
              }
              /php]
            • Dan Royus
              Iba a decir lo mismo.
              
              Incluso, si creas un módulo como el Blog, suele extender del Controller de la aplicación, por lo que todo controlador del Blog tiraría del controlador de tu aplicación, que a su vez, extendería del controlador del framework. Sería un override sobre otro override ;)
            • Christian Salazar
              para eso son,
            • Dan Royus
              No obstante Ariel Richard, aunque tienes razón en parte, creo que a veces se abusa en exceso, de "la facilidad" de lanzar una preguntar al aire y que nos resuelvan la vida en pocos minutos.
              
              Con el simple ejercicio de hacer el trainning de Yii y seguir los tutoriales de la guía rápida, muchas de las preguntas que aquí salen, no se realizarían, un trabajo que en una semana, exagerando bastante, haces en tu casa.
              
              Y no es que me importe ayudar a otra personas, es que respondiendo a veces, perjudicas más que ayudas ;)

          • Carlos Belisario Ir a la Publicación
            [SUPER OFF-POPIC]
            Alguno ha pensado un poco en que va a pasar cuando se haga el release de Yii 2.0 con los proyectos recién empezados en Yii 1.X? al igual que le paso a la gente con symfony y zend framework nos toca pasar de trabajar de una manera a otra totalmente distinta ya que las versiones son totalmente incompatibles. Toca hacer refactory? mandar a la mierda Yii2 y matar y mantener el proyecto con Yii1.X?  que hacer si tenemos que empezar un proyecto en estos momentos donde están diciendo que lanzarán otra versión (que todavía esta en beta y no se puede usar para producción y esto tiene que quedar muy claro es un beta) y que la versión 1 no esta muerta pero en algún momento no muy lejano lo estará o simplemente no será la estable de nuestro querido framework.
            
            Es algo que me da vuelta, empezar una app con Yii usar otro framework que hacer, no me malentiendan me gusta usar YiiFramework y me alegra que se estén actualizando a las "nuevas features" que está brindando el php (ojo no son conceptos nuevos son cosas que tienen mucho tiempo ya usandose en otros lenguajes pero recientemente aplicadas al php). Pero donde esta el plan de migración de versiones?  Si ando dando vuelta por una nueva app que me va a tocar hacer y me encuentro en el que hacer y por supuesto tenía que berrinchear un poco, saludos
            • Miguel Ángel Lucas Sánchez
              Me temo que es inevitable la confrontación de situaciones. Personas que tengan una api a màs del 90%  no veran con buenos ojos volver al inicio y cambiar toda la base de todo. Supongo también que aunque sea una versión estable habrá que esperar algo más, pero claro, tarde o temprano habrá que dar el salto, es inevitable. Está bien recordarlo para ir terminando cosas y prepararse para lo nuevo...
            • Arley Romero
              Me encuentro en este dilema justamentem, no se, si iniciar un nuevo proyecto con Yii2 o Yii1.1.15 que recomiendan los expertos; es mas alguno sabe la fecha en la cual se lance la version estable del Yii2?
            • Christian Salazar
              es inevitable. analizando la modalidad de trabajo del 90% de los devs de php, y gracias a la maña tan arraigada de hacer las cosas como les venga del forro..pues entonces no queda otra:  si quieren Yii2, a aprender de nuevo y les tocará hacer sus codigos de nuevo. son dos mundos. yii1 y yii2.
            • Esteban Adrián P
              Hace años, muchos, unos 20, estudiaba Ingeniería en Sistemas...
              Un profesor (Programación I, Pascal) asaba para programar "chwritte"...
              Por entonces ya hacía mis pininos con Clipper Summer '87 y se "amenazaba" la salida del 5 (y en meses del 5.3)...
              Dijo algo, por entonces que no comprendí hasta este momento:
              "Uso chwritte xq lo entiendo, a pesar que hay otros editores mucho mejores y potentes... Pero a mi chwritte me alcanza..."
              No hace mucho George R. R. Martin (Game of Thrones) confesó en una entrevista que la computadora donde "pare" sus escritos tiene DOS y usa WordStar O.o
              Entonces, pregunto: ¿Es importante la herramienta o el obrero?
              Si sabés utilizar Yii 1.x, y te alcanza.. ¿Para qué cambiar?...
              Esa carrera absurda de ver qué estrella decora tu escalafón porque usás tal o cual herramienta, me parece estúpida (RAE, consultar)...
              No estoy de acuerdo con eso de usar una versión más nueva xq ¿es nueva? Si la que tengo me alcanza, y listo... :D
            • Christian Salazar
              porque es importante cambiar. por haber cambiado estas usando .GIT, por haber cambiado pasaste de hacer aplicaciones de consola con NCURSES a aplicaciones Deskto y de ahi a aplicaciones Web...hay que cambiar.  namespaces es la via correcta para sacar a ese viejo php de ese estado antiguo aunque funcional, tan funcional como Wordstar.
            • Christian Salazar
              lo que digo es: "no cambiar con miedo".  cambiarse es cambiarse, si eso implicar hacer cosas de cero, a hacerlas. Ahora, si una aplicacion web puede hacerse con Yii1x, pues haganla, pero, mejor será hacerla con Yii2, por que el tiempo pasa rapido...y si un dia (5 años despues) te dicen sabes ? esta cosa X es muy buena..necesita que sepas "A", para saber "A" necesitas saber "B", y esta implica "C"...y tu ni siquiera llegas a "M"...te faltan 10 letras..es decir...5 años para entender C, B y A....estas muerto.
            • Christian Salazar
              ahora, que hace uno para evitar el "cero y empezar de cero"....hacer desde ya aplicaciones capaces de ser reutilizables, desarmando la funcionalidad en piezas que funcionen solas, cada pieza por cuenta, migrar las piezas es migrar la aplicacion.
            • Esteban Adrián P
              50/50... Convengamos que subirse a la alocada carrera de usar siempre lo último es tan dañino como quedarse en el tiempo. :)
            • Christian Salazar
              exacto...y si no fuera por los cambios, internet no existiría, las familias seguirían enviandose cartas que llegaban cada 45 dias...(esto lo saben los que se fueron, no los que se quedaron)
            • Dan Royus
              Si no cambiáramos, no habría sitio para tanto programador. Cambiar implica que se renueva el parque de programadores, que unos se quedan en un modelo, y otros que llegan aprenden.
            • Carlos Belisario
              El problema no es el cambio, el problema es que no hay transición para cambio, simplemente como bien puede verse en las discusiones del framework y el código que ya han liberado son dos mundos distintos, ¿que hacia allá tenía que irse? claro que por supuesto que si, pero por la tardanza pensé que debía haber un plan para hacer el cambio de Yii1 a Yii2 menos traumático, que como paso con Zf y symfony, la sintaxis namespace, closures, di, etc, etc que tiene nuevo yii2 no es nada del otro mundo ni nada nuevo, incluso en el php ya hay frameworks mas maduros en la aplicación de esto "nuevo" que brindo el php (miren sf2, zf2, laravel, y puedo seguir nombrando), lo que berrincheo (y vuelvo y lo digo que es puro berrinche que tenía que hacer con gente que me entendiera =S) es que no hubo un buen plan para no hacer tan traumático el cambio de versiones, que es lo que a la final me hace pensar.
              
              Ojo no estoy en desacuerdo con que se mejore ni se implementen features de versiones mas recientes de php, de hecho lo apoyo y bastante incluso creo que Yii se quedo un poco dormido en empezar a implantarlos, lo que vi traumático es que no hay transición, de hecho la decisión que se tomo en el caso de la nueva app con mis compañeros fue el cambio de fw pensando justamente en ese detalle.
            • Christian Salazar
              de acuerdo.  aunque hacer una transicion mas suave es muy dificil...namespaces son  o no son...
            • Carlos Belisario
              seeee e imagino que no era parte de las prioridades porque como bien se ha visto en las comunidades php Yii era uno de los que se esta quedando en 5.2, sin uso de namespace, etc incluso cosa buena de la versión 2 es la facilidad para usar composer con ella, el autoload usa el standar que se discutio para la interoperatibilidad entre fw, etc y a todo eso se tenía que empezar a llegar e incluso debió cocinarse hace mucho, saludos ya dejo de berrinchar pa que no me regañen =)

          • Alejo Peña Ir a la Publicación
            Hola.
            Yo hice una copia exacta de un proyecto en yii desde un pc a otro..
            Cuando pruebo mi app en el otro pc me sale el siguiente error..
            Cual podria ser la causa?
            (Obviamente hice todas las configuraciones necesarias)
            • Carlos Belisario
              pues la línea que indicas no tiene nada llamado idemp seguro que es el archivo que te esta dando problemas? lo más seguro es que en tu otra pc tengas los warning ocultos por el php ini y en la pc "nueva" por llamarla de una manera tegas el error_reporting E_ALL lo cual muestra cualquier error o warning en algún código
            • Recursos Formacion
              o no copiaste el framework, o no en el mismo sitio.....
            • Recursos Formacion
              Si dices "hice todas las configuraciones necesarias" la respuesta es facil....revisalas
            • Christian Salazar
              si algun dia, por el amor de dios, se entendiera para qué es un STACK TRACE.....entonces, los programadores dejarían de enviar "fotos" del error y mandarían el stacktrace....viendo el stacktrace se ve quien causo la llamada y donde se produjo el error....por cierto, tambien existe el log....con el Log, y el Stacktrace se ve el causante del error...el resto es Adivinanza.

          • Angelika Hernandez Ir a la Publicación
            Hola  tengo el siguiente problema realice un crud con el generador para la tabla llamada ,ahora  quiero hacer una consulta a  esa misma tabla para contabilizar las llamadas que se han realizado,utilice un query pero no me funciona....espero alguna sugerencia Gracias
            public function actionIndex()
             {
              $sql="SELECT * FROM llamada";
             $sqlLlamada= Yii::app()->db->createComand($sql)->queryAll();
             
             $dataProvider=new CActiveDataProvider('Llamada');
             $this->render('index',array(
             'dataProvider'=>$dataProvider,
             'sqlLlamada'=>$sqlLlamada,
             ));
             }
            Esto lo coloque en el index.php de la views de llamda
            <?php
            if($sqlLlamada!==null){ ?>
            <table border="1">
            <tr>
            <th>ejemplo de prueba</th>
            </tr>
            <tr>
            <th>Id_Llamada </th>
            <th>Num_Orden </th>
            <th>Num_Llamada </th>
            </tr>
            <?php foreach ($llamada as $data){ ?>
            <tr>
            <td><?php echo $data->Id_Llamada;?></td>
            <td><?php echo $data->Num_Orden;?></td>
            <td><?php echo $data->Num_Llamada;?></td>
            </tr>
            <?php } ?>
            </table>
            <?php } else{
            echo "No se encontraron registros!!";
            } ?>
            • Juvenal Claros
              Hola buenas. por lo que veo en tu codigo, estas haciendo redundante, porque  basta con el CActiveDataProvider, checka todas las funciones que este clase...suerte!!!!!!!!1
            • Mauro Maximiliano Martinez
              Hola angelica, para comenzar, esta mal la logica ya que no respeta mucho el patron mvc y ademas estas realizando algo redundante. Con realizar la instancia de CActivedataProvider y enviarla a la vista alcanza. En tu vista index.php te conviene utilizar un widget para realizar la tabla con los datos. Ahi podes utilizar el "CGridView", al cual, con enviarle el $dataProvider te renderizara la tabla que necesitas.
            • Angelika Hernandez
              Gracias tenian razon!

          • Daniel Caller Ir a la Publicación
            Hola tengo el siguiente problema, uso cruge y además he implementado una extensión para el envío de email... Al momento de enviar el formulario de contacto en el servidor local lo envío correctamente pero en el servidor on-line me causa problemas con cruge... Pongo el error que me arroja
            CDbCommand falló al ejecutar la sentencia SQL: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away. The SQL statement executed was: SELECT *
            FROM `cruge_authitem`
            WHERE name=:name
            
            Este es el código que generar el error:
            
            'visible'=>Yii::app()->user->checkAccess('action_contrato_update'),
            
            • Daniel Caller
              Según he leído esto se genera por sobre carga en la BD ... he revisado la tabla cruge_authitem y tengo como 700 registros...
            • Daniel Caller
              Le he quitado todos los checkAccess y me manda esto
              CDbCommand falló al ejecutar la sentencia SQL: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away. The SQL statement executed was: SELECT * FROM `cruge_session` `t` WHERE `t`.`idsession`=49 LIMIT 1
            • Christian Salazar
              1. te garantizo que el problema, ni es yii, ni menos cruge (que no tiene nada que ver con el issue que tienes).  el problema debe estar en alguna limitacion del hosting, una falta a la norma del mysql instalado (no se cual falta), cualquier otra cosa...700 registros es nada....7000 es nada...70.000 es nada...7.000.000 (es algo, y sin embargo funciona y bien).
              
              2. si ya existe el framework de correos de crugemailer, que te abstrae toda la app de detalles de correos y que permite incorporarle cualquier motor de correos...probada, requeteprobada, se sabe anda muy bien en ambientes extremos, y tiene 2 años de depuracion encima...(leiste sobre crugemailer ? algo de ella no te funciono ? que cosa falló ?).
              Si tu app tiene necesidades especiales de correos, simplemente usando una clase override en MiCrugeMailer permite que toda tu app use eso, y comparta el motor y mecanismo de envio de correos, llamadas como la siguiente hacen que a tu sistema ni le importa que harás al momento de "enviar un correo", pudieras estar enviando correos, un sms, un mensaje por chat, un log, y un registro de control....todo bajo el caso de uso: "enviar un reporte de inventario al usuario para una lista de productos"
              
                Yii::app()->crugemailer->reporteInventario($usuario, $productos);
              
              3. que dicen los Logs ? application.log ? no los veo en tu reporte...
            • Daniel Caller
              Hola Christian gracias por responder... sí yo sé que el problema no es cruge, funciona bastante bien, lo cual agradezco infinitamente que te hayas tomado el trabajo de realizarlo, el motivo de mi consulta era saber por qué la aplicación le echa la culpa a cruge... 2. no uso crugemailer porque no necesito renderizar vistas para los correos y no quería extender la clase para sobreescribir el método de sendMail... el envío de correos lo tengo dentro de un método de un componente que entre otras tantas cosas revisa saldos y envía un correo plano como alerta... El log que pongo abajo es probando el formulario de contacto que trae Yii
              2014/09/14 00:26:14 [error] [exception.CDbException] exception 'CDbException' with message 'CDbCommand falló al ejecutar la sentencia SQL: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away. The SQL statement executed was: SELECT *
              FROM `cruge_authitem`
              WHERE name=:name' in /home/u525160496/yii/framework/db/CDbCommand.php:543
              Stack trace:
              #0 /home/u525160496/yii/framework/db/CDbCommand.php(415): CDbCommand->queryInternal('fetch', Array, Array)
              #1 /home/u525160496/public_html/protected/modules/cruge/components/CrugeAuthManager.php(825): CDbCommand->queryRow()
              #2 /home/u525160496/public_html/protected/modules/cruge/components/CrugeWebUser.php(123): CrugeAuthManager->getAuthItem('action_proceso_...')
              #3 /home/u525160496/public_html/themes/osatacna/views/layouts/main.php(60): CrugeWebUser->checkAccess('action_proceso_...')
              #4 /home/u525160496/yii/framework/web/CBaseController.php(126): require('/home/u52516049...')
              #5 /home/u525160496/yii/framework/web/CBaseController.php(95): CBaseController->renderInternal('/home/u52516049...', Array, true)
              #6 /home/u525160496/yii/framework/web/widgets/CContentDecorator.php(76): CBaseController->renderFile('/home/u52516049...', Array, true)
              #7 /home/u525160496/yii/framework/web/widgets/CContentDecorator.php(54): CContentDecorator->decorate('<div id="conten...')
              #8 /home/u525160496/yii/framework/web/widgets/COutputProcessor.php(44): CContentDecorator->processOutput('<div id="conten...')
              #9 /home/u525160496/yii/framework/web/CBaseController.php(206): COutputProcessor->run()
              #10 /home/u525160496/yii/framework/web/CBaseController.php(300): CBaseController->endWidget('CContentDecorat...')
              #11 /home/u525160496/public_html/themes/osatacna/views/layouts/column1.php(8): CBaseController->endContent()
              #12 /home/u525160496/yii/framework/web/CBaseController.php(126): require('/home/u52516049...')
              #13 /home/u525160496/yii/framework/web/CBaseController.php(95): CBaseController->renderInternal('/home/u52516049...', Array, true)
              #14 /home/u525160496/yii/framework/web/CController.php(784): CBaseController->renderFile('/home/u52516049...', Array, true)
              #15 /home/u525160496/public_html/protected/controllers/SiteController.php(186): CController->render('contact', Array)
              #16 /home/u525160496/yii/framework/web/actions/CInlineAction.php(49): SiteController->actionContact()
              #17 /home/u525160496/yii/framework/web/CController.php(308): CInlineAction->runWithParams(Array)
              #18 /home/u525160496/yii/framework/web/filters/CFilterChain.php(133): CController->runAction(Object(CInlineAction))
              #19 /home/u525160496/public_html/protected/modules/cruge/components/CrugeAccessControlFilter.php(90): CFilterChain->run()
              #20 /home/u525160496/yii/framework/web/filters/CFilter.php(38): CrugeAccessControlFilter->preFilter(Object(CFilterChain))
              #21 /home/u525160496/yii/framework/web/filters/CFilterChain.php(130): CFilter->filter(Object(CFilterChain))
              #22 /home/u525160496/yii/framework/web/CController.php(291): CFilterChain->run()
              #23 /home/u525160496/yii/framework/web/CController.php(265): CController->runActionWithFilters(Object(CInlineAction), Array)
              #24 /home/u525160496/yii/framework/web/CWebApplication.php(282): CController->run('contact')
              #25 /home/u525160496/yii/framework/web/CWebApplication.php(141): CWebApplication->runController('site/contact')
              #26 /home/u525160496/yii/framework/base/CApplication.php(180): CWebApplication->processRequest()
              #27 /home/u525160496/public_html/index.php(13): CApplication->run()
              #28 {main}
              REQUEST_URI=/index.php?r=site/contact
            • Daniel Caller
              Y repito en el local me funciona correctamente, en el hosting es el suplicio...
            • Christian Salazar
              General error: 2006 MySQL server has gone away,  por eso, #2, revisa q el hosting no imponga limitantes al numero de consultas, normalmente "has gone away" ocurre cuando el cliente mysql ha sido desconectado del servidor..desde el servidor, es decir, mysql dijo: "chao, no te oigo mas, kill socket".  razones ? muchas. timeouts cortos, etc.
            • Daniel Caller
              Sí estuve leyendo sobre eso... aunque no entiendo que tanto trabajo hace el servidor enviando un correo y diciéndome que el problema está en una consulta que hace cruge... Gracias Christian igual son sólo pruebas la aplicación es para una intranet sólo que la colgue en el hosting para probarla desde otras máquinas, ya que yo no uso windows ni el IExplorer y en el lugar donde la voy a poner sí
            • Christian Salazar
              por ejemplo. un "has gone away" ocurre cuando un script consume mucho tiempo y el servidor lo mata...hay variables PHP que controlan el tiempo maximo de ejecución, y si tu script php entero dura mas que todo eso...entonces va a ser colgado, y mysql vera que la conexion se cayó..terminando en ese error.
            • Christian Salazar
              claro que hace trabajo...autenticando, esperando respuestas, revalidando..etc etc etc...un email puede tardar 5 segundos en enviarse, si tu servidor tiene un PHP settting que diga que mas de 5 segundos es "matable" entonces matara a tu script....
            • Christian Salazar
              quieres simular el error en tu aplicacion local ? pon una llamda:
              
              public function actionMiAction(){
                 ...bla...
                 sleep(30);
                 $this->render(...);
              }
              tendrás un lindo "gone away"...busca el setting de php que da el maximo de ejecución por script. las aplicaciones de consola no sufren de ese mal. Eso sucede por el envio de emails, y mucho tiempo de ejecución en un mismo script...
            • Daniel Caller
              muchas gracias por tus explicaciones y tu tiempo Christian, al igual que muchos he estado leyendo las publicaciones que haces sobre modelado y realmente son verdaderos "quita vendas" de los ojos
            • Christian Salazar
              q bueno, me alegro que haya una voluntad de ver mas alla del teclado, el tiempo dedicado a sacarse la venda dara frutos,

          • Percy Ivan Miranda Moreano Ir a la Publicación
            Reliable Server for PHP on Laravel, RubyonRails.We provide web hosting, domain registration. http://www.hostinglaravel.com

            • Pedro Gonzalo Soto Soto Ir a la Publicación
              hola, estoy iniciando en el uso de yii, tengo que implementar algo llamado bootstrap, pero también encontré algo llamado yiistrap y yiibooster, cual me recomiendan? es para un proyecto de un ramo, espero sus respuestas, gracias
              • Junior Cabrera Vasquez
                bootstrap es la base de ambos!
              • Pedro Gonzalo Soto Soto
                Cual es más completo de los otros 2?
              • Jose Gabriel Paredes Oduber
                El bootstrap es el mejor
              • Oscar Cortez
                Yii booster usa bootstrap 3.1.1 y yiistrap usa bootstrap 2.3.2. Ambos incorporan gii (generador de crud). Yo uso yiibooster. Bootstrap es un framework frontend. Yiibooster y yiistrap son extensiones de yii para manejar componentes (widget) al estilo bootstrap
              • Pedro Gonzalo Soto Soto
                gracias por sus respuestas, una duda, el yiistrap me da una opcion en el gii para generar el crud, pero en yiibooster no encontre esa opcion (probe ambos), es normal o el yiibooster lo implemente mal?
              • Oscar Cortez
                Yiibooster igual tiene. Pero no hay mucha info en su pag oficial. Googlealo con: yiibooster gii config (jejeje como si no supiéramos googlear)
              • Mauro Maximiliano Martinez
                Utiliza yiibooster. Esta actualizado a la ultima version de bootstrap, y tiene los mismos widgets de yiistrap.

            • Ramiro Anacona Meneses Ir a la Publicación
              Hola Christian, dale una revisada a esto: http://www.yiiframeworkenespanol.org/foro/showthread.php?tid=832
              
              Gracias.
              • Christian Salazar
                respondido en el foro.
              • Ramiro Anacona Meneses
                (y)

            • Juan Polania Ir a la Publicación
              Buen día, hoy mi pregunta no es nada sobre yii. 
              Quiero saber si alguien sabe como registrar los derechos de autor de un software desarrollado. He consultado y me dicen que es en el siguiente link http://www.derechodeautor.gov.co/ pero no estoy seguro como hacerlo. Sus comentarios serán de gran ayuda.

              • Mauro Maximiliano Martinez Ir a la Publicación
                Buen día, tengo una inquietud al realizar uno o mas JOINs mediante un criteria, con tablas que no se encuentran relacionadas entre si con FK. Por motivos de diseño de la aplicación, no pueden estar relacionadas.
                
                Entonces, estoy realizando el criteria de la siguiente manera:
                
                $criteria = new CDbCriteria();
                 
                $criteria->select = 'a.IdMovil,a.IdDispositivo,b.Movil_Dominio,c.Disp_ID';
                $criteria->alias = 'a';
                $criteria->join = 'LEFT JOIN moviles AS b ON a.IdMovil = b.IdMovil';
                $criteria->join .= ' LEFT JOIN dispositivos AS c ON a.IdDispositivo = c.IdDispositivo';
                $criteria->condition = "a.IdUsuario = $id";
                
                Y la consulta:
                
                $model = $model->findAll($criteria); 
                
                El problema es, que al recuperar el modelo sólo me devuelve las 2 columnas a.IdMovil y a.IdDispositivo, pero no las del JOIN.
                
                Que puedo hacer para solventar este problema sin necesidad de realizar relaciones entre las tablas?
                
                Gracias
                • Jhon J Toloza
                  creo que tiene que ver con tu segunda linea $criteria->select ="", casi estoy seguro que podrias quitarla, y si no funciona intenta $criteria->select =' * , a.IdMovil,a.IdDispositivo,b.Movil_Dominio,c.Disp_ID':
                • Mauro Maximiliano Martinez
                  No, probe de las 2 maneras pero sigue funcionando igual. Si quito la linea del select trae todos los registros de la tabla sin los join. Y, si utilizo la linea con el * funciona de la misma manera, y sigue sin devolver los datos de los JOIN
                • Mauro Maximiliano Martinez
                  Una manera funcional que encontré, es realizarlo por el queryBuilder:
                  
                  $sql = "SELECT a.IdMovil,a.IdDispositivo,b.Movil_Dominio,c.Disp_ID FROM tabla AS a
                  LEFT JOIN moviles AS b ON a.IdMovil = b.IdMovil
                  LEFT JOIN dispositivos AS c ON a.IdDispositivo = c.IdDispositivo
                  WHERE a.IdUsuario = $id";
                  
                  $consulta = Yii::app()->db->createCommand($sql)->queryAll();
                  
                  Aunque me queda la duda de por qué no funciona con CDbCriteria... de seguro hay algun parametro o truquito que no estoy encontrando :P
                • Jhon J Toloza
                  bueno, si ud quiere obtener las tablas del join es decir .. b.columna no va a poder debido a que la consulta se hace hacia el modelo que use, y los join solo son usuados para la busqueda, ahora no se si sabe pero con yii ud puede crear las relaciones asi no existan en la base de datos, osea son opcionales. de echo tambien utilizo estas relaciones que son opcionales.
                • Mauro Maximiliano Martinez
                  No sabía que se podian crear las relaciones en el modelo, sin que existan en la base de datos. Ahora investigaré un poco mejor.
                  
                  Gracias

              • Diego Armando Hernandez Villalba Ir a la Publicación
                Hola a todos, ¿Cómo puedo visualizar la latitud y longitud de un marcador que tiente como draggable = true con la extensión EGMap? Gracias.

                • Recursos Formacion Ir a la Publicación
                  Esto no se arregla ni con la independencia.
                  Que dura es la labor del político, !, Con la de problemas que tiene, la de "casos" que tapar,...y todavia tiene tiempo de pensar en la Independencia!
                  Pues como no sea pronto, no quedará nada que ondear!

                  • Christian Salazar Ir a la Publicación
                    buenas noches gente, aqui les dejamos este sitio web para saber que opinan, para que prueben, envien sus comentarios constructivos.
                    
                    TAGS DE CODIGO 
                     $codigo = 123; 
                    en base a este sitio web, podrán ahora añadir tags "
                     $micodigo; 
                    " en sus comentarios de facebook aqui en el gruopo y tras un tiempo corto serán publicados en el sitio web, con capacidad de búsqueda por palabras (no fases complejas). BUSQUEDA, el sitio web les permite buscar texto y codigo desde una sola plataforma y hacia todos los canales sociales: Facebook, Twitter, Grupo de Fb, YiiOficial, Blogs, Foro, Wiki. URL, cada post, así venga de Facebook, de Twitter, de un canal RSS, o de cualquier otro origen tendrá su propia URL, que podrán compartir en cualquier parte y comentarla con FacebookComments, independientemente de la conversación que el post haya detectado. http://www.yiiframeworkenespanol.com/post/consulta-alguien-a-trabajado-en-la-integracion-de/facbk/171245476282742_692661440807807 LISTA DE ARTICULOS, verán un menú de los ultimos 1000 artículos, que ayuda a buscar información, tanto a humanos como a buscadores. http://www.yiiframeworkenespanol.com/articulos SOCIAL, se unen todas las redes sociales, Twitter, Grupo deFacebook, Foro, Wiki, YiiOficial, Blog personales (bienvenidos otros que quieran aportar su canal RSS/Atom). La url (Beta) : www.yiiframeworkenespanol.com Atentamente sus servidores. (Gracias Ivan Salomon por el Hosting de calidad, aunque el foro y la wiki se mantienen en 1and1, el sitio nuevo esta en este nuevo hosting).
                    • Christian Salazar
                      Ejemplo de comentario puesto acá con tags, que aparecerá en la sección "Facebook" del sitio web:
                      
                      
                          $algo = isset($_GET["algo"]) ? $_GET["algo"] : "nada";
                          if("123" == $algo) 
                               echo "<pre>tipeado: {$algo}</pre> <h1>safe tags</h1>";
                      
                      chao. prueba finalizada. debería aparecer pronto.
                    • Carlos Belisario
                      Grandioso me gusta la nueva forma del sitio +1000000000000000000000000000000000000000  a todos lo que coordinaron y lo hicieron
                    • Esteban Adrián P
                      [troll/emo mode ON]
                      Lamentablemente, Carlos, Christian donó su tiempo y esfuerzo en algo que se discutió durante mucho tiempo :(
                      Y el muy (con respeto) HDP logró (a pesar de cierta crítica de mi parte :S )
                      Si esto, YiiÑ va tomando forma, es gracias a su entusiasmo...
                      [troll/emo mode OFF]
                      Felicitaciones, Chris :D
                    • Christian Salazar
                      jajaja gracias
                    • Christian Salazar
                      muchos podrian decir (y me lo han insinuado en otras partes)
                      "de seguro el pibe no tiene nada que hacer o vive arrimado y no paga ni la luz...".
                      
                      la respuesta de nuevo es: MODELADO.
                      
                      todo, absolutamente todo el sitio web esta hecho con 2 extensiones 100% reutilizables y abstractas, son tan reutilizables que la experiencia adquirida en ellas será utilizada para resolver problemas de mis clientes, no haciendo otro desarrollo, sino reutilizando las extensiones y expandiendolas en funcionalidad. por tanto, a quienes "me pagan la luz  y lo demás" se benefician con research.
                      
                      la primera extensión, es un extractor abstracto de contenido social....le importa orto de donde vino la publicación, la obtiene mediante una simple clase de asociacion:
                      
                      [post]---recibidopor-->[alimentador]------>[lee]------>[redsocial]
                          lee: mediante [plugin]
                      
                      donde [plugin] es uno diseñado y "especializado" para la [redsocial], así, sin importar la red social, se hace un plugin que implementa una simple interfaz y listo, es capaz de darle información al [alimentador], que finalmente recibe un [post].
                      
                      hasta ahi esa extensión hace solo es: alimentar, no es su tarea almacenar, por tanto la siguiente extensión es mas como un CMS para yii, toma un [post] abstracto, lo almacena, lo busca, lo lista, lo analiza, sin importarle de donde vino.
                      
                      finalmente el sitio web (hecho en yii puro) lee posts de diversas fuentes usando al [alimentador],  captura cada [post ] y se lo da al [gestionador], quien es el encargado de proveer las listas de posts, los comentarios sobre estos y las personas involucradas.
                      
                      diseñado con uml, yiiframework, y sobre todo: modelado.  1 semana de desarrollo, el motor de extracción: 8 horas, el gestionador: 2 dias, el sitio web 2 dias...resto: fixtures.
                    • Esteban Adrián P
                      Sos un mostro >_<
                    • Christian Salazar
                      queda ver de parte de la comunidad:  
                      qué es útil,
                      qué no lo es,
                      cómo funcionaría mejor algo ? (qué y cómo ?)
                      
                      TASK:
                      si alguien sabe cómo enviar una notificación a un usuario de facebook usando el GraphApi de éste, bienvenido, ya tuve suficiente con los accessTokens de openAuth y las adivinanzas en el api de FB.
                    • Freddy Antonio Cruz U
                      :O esta genial el proyecto, felicitaciones!!
                    • Hector Moncada
                      FELICITACIONESSSSS..ahi la vi..pero queria postear un comentario y no encontre como...despues con tiempola vere en detalle. MUY BUENA! ABRAZO
                    • Christian Salazar
                      gracias don hector.  el tema de publicar comentarios esta un poco enredado, razon:  es un compendio de varias redes sociales en un solo sitio web. por tanto el caso de uso "publicar un comentario" depende de la red social seleccionada: para eso abajo de cada post hay un enlace a la red social para comentar desde ella, o simplemente comentas con el widget Fbcomments (pero eso no alertara al usuario que hizo la pregunta, no se como comunicar fbcomments con el dueño del post en el caso de que el post sea de tipo facebook).
                    • Juan Camilo Restrepo
                      Excelente que buen trabajo, y gracias ;)
                    • Christian Salazar
                      andamos resolviendo un tema que no permite actualizar las recientes publicaciones, en espera del proveedor de hospedaje para que actualice unos settings de php que causan denegación de paso de argumentos a aplicaciones de consola.  mas info:
                      
                      problema:
                      
                      cuando se intenta acceder a una consola yii (CConsoleApplication) esta falla diciendo: "This script must be run from the command line".
                      es decir, cuando se corre el cronjob que lee los feeds este falla con ese error.
                      
                      causa primaria:
                      
                      el error "This script must be run from the command line" es generado en:
                      https://github.com/yiisoft/yii/blob/master/framework/console/CConsoleApplication.php#L79
                      sucede cuando este script detecta que la variable de argumentos de linea de comando no existe 
                      $_SERVER["argv"]
                      . La variable de servidor indicada es la que sostiene la linea de comando y sus argumentos, no falla cuando por ejemplo solo quieres hacer: "php -f x.php" siendo x.php un script directo, sin invocaciones a otros scripts y/o sin uso de argumentos. pero las aplicaciones de consola usan argumentos. por eso falla. analisis: La variable de servidor indicada es bloqueada / activada por medidas de seguridad mediante un setting de php.ini, enlace: http://php.net/manual/es/ini.core.php#ini.register-argc-argv solución: #en php.ini poner el switch a "On" register-argc-argv = On; alternativas que no funcionan: el proveedor de hosting no soporta "settings override" (es decir, poner un php.ini con settings privados para el hospedaje en cuestión, eso puede hacerse en apache mediante una directiva que admite que el modulo php acepte otro php.ini sectorizado. Tampoco funciona indicar una ruta forzada de php.ini en la llamada al modulo php). php -c "~/miphp.ini" -f "~/miscript.php --mascota=maty"
                    • Ivan Salomon
                      Estamos en tema. Pronto la solución.

                  • Ignacio Ortiz Ir a la Publicación
                    Amigos, me gustaría saber cual es mi error, estoy agregando una imagen a un pdf y resulta que no me encuentra la imagen, adjunto dirección de la imagen y el código
                    • Fernando Ramírez Muñoz
                      No será por un asunto de permisos?
                    • Ignacio Ortiz
                      no, utilizo la imgen en vistas y funciona bien
                    • Jesús Peña
                      En lugar de usar baseUrl utiliza
                    • Jesús Peña
                      En lugar de baseUrl deberías utilizar hostInfo
                    • Ignacio Ortiz
                      tiene algún ejemplo sobre como aplicarlo ?
                    • Jesús Peña
                      donde tienes YII::app()->baseUrl puedes poner asi: Yii::app()->request->hostInfo
                    • Ignacio Ortiz
                      hay que definir algo en el CONFIG ?
                    • Jesús Peña
                      no!.
                    • Ignacio Ortiz
                      me aparece:  "La propiedad "CWebApplication"."hostInfo" no se encuentra definida. "
                    • Jesús Peña
                      ohh, que raro!!... que pasa si solo quitas donde dice YII::App()->baseUrl?
                    • Ignacio Ortiz
                      ya solucione el error, pero sigue sin mostrar la imagen
                    • Ignacio Ortiz
                      <?php echo(CHtml::image(Yii::app()->request->hostInfo. "/css/imagenes/marca.png")); ?>
                    • Ignacio Ortiz
                      Jesús, tendre que agregar algo más a    "/css/imagenes/marca.png"
                    • Laro Man
                      Tenes que poner la ruta completa. Desde la / del host
                    • Jesús Peña
                      es que depende donde tendras tu imagen man!!...
                    • Laro Man
                      lo que te trataba de decir es tenes que poner la imagen asi. por ejemplo: Si tu webapp esta en "/www/miweb" Lo que tienes que hacer es declarar un Alias en tu archivo config. (http://www.yiiframework.com/doc/guide/1.1/es/basics.namespace). para que te aparezca en el pdf debes llamarlo asi /www/miweb/images/foto.jpg
                    • Osc Quisbert
                      usa basePath en lugar de baseUrl, asi tendras la ruta absoluta
                    • Ignacio Ortiz
                      en mi caso, como deberia definir mi ruta usando el basePath o Hostinfo ?
                    • Andres Lucio
                      yo no coloco el baseurl pues este te dirige al protected yo lo hago directamente asi "/css/imagenes/marca.png"

                  • Jose Daniel Cifuentes Ir a la Publicación
                    Cordial saludo, alguno de ustedes tiene algún ejemplo o guía de como se ´crearía una aplicación de inventarios o ejemplos similares, en donde los productos tienen combinaciones de talla, color. Agradezco su ayuda.

                    • Ivan Salomon Ir a la Publicación
                      [1/2 OFF TOPIC] Interesantisimo articulo, no solo por la parte laboral sino para replantearnos como trabajamos y vivimos. 
                      http://itflow.biz/10-best-countries-fordevelopers/

                      • Botia Julian Ir a la Publicación
                        Buenas noches, algo estraño ocurrio actualicé Yii, y el problema que ocurre es que en una funcionalidad que me funcionaba bien ahora me dice 
                        
                        'La propiedad "DetalleProgramaAuditoria"."
                                        ID_PROGRAMA_AUDITORIA" no se encuentra definida.
                        
                        asi acurre con varias propiedades de ese modelo DetalleProgramaAuditoria
                        
                        alguna idea
                        
                        se que es dificil con tan poca información pero cualquier pista les agradeceria
                        • Carlos Belisario
                          case sensitive? propiedad no existe? versión?
                        • Esteban Adrián P
                          Si dice "propiedad" habla de "modelo" o "controlador"... Ambos son objetos que:
                          - en el caso de ser "modelo" o es una propiedad "dinámica" (definida fuera de la tabla de la BD) como una variable/atributo, o bien...
                          - en el caso del "controlador" como una variable/atributo del mismo que en el ·modelo" lo adjudicas a una propiedad del mismo...
                          Ante tus ojos tienes la respuesta :)
                        • Fernando Ochoa
                          mira este caso.... depronto te pueda servir.. http://www.yiiframework.com/forum/index.php/topic/51744-obtener-valores-de-usuario/
                        • Botia Julian
                          aca esta el código de mi modelo
                          http://pastebin.com/Ftcf6uGQ
                          
                          y esta es la base de datos
                        • Botia Julian
                          mirando el problema al parecer es con el scenario
                        • Botia Julian
                          pero no entiendo por que antes si funcionaba :(
                        • Botia Julian
                          por si algo el problema eran los escenario: aca dejo la forma cómo los modifique
                          
                          http://pastebin.com/VpGW0dYJ
                          
                          sin embargo no logre entender cómo funcionaba antes.
                          
                          saludos a todos 
                          Gracias
                          Carlos Belisario Esteban Adrián P y Fernando Ochoa
                        • Fernando Ochoa
                          Jajajaj brujeria... jajaja
                        • Christian Salazar
                          en algunas partes el pastebin esta bloqueado, como alternativa puedes copiar el codigo acá entre tags 
                          codigo
                          y visualizarlo en el nuevo sitio web, esta es la url de este post: http://www.yiiframeworkenespanol.com/post/buenas-noches-algo-estrano-ocurrio-actualice-yii-y/facbk/171245476282742_699708546769763
                        • Botia Julian
                          Código que no funcionaba 
                          
                          public function rules() {
                                  // NOTE: you should only define rules for those attributes that
                                  // will receive user inputs.
                                  return array(
                                      array('
                                          ID_PROGRAMA_AUDITORIA, 
                                          FECHA_AUDITORIA, 
                                          LUGAR_AUDITORIA, 
                                          LIDER_EQUIPO_AUDITOR, 
                                          HORA_INICIO_AUDITORIA, 
                                          HORA_INICIO_FIN',
                                          'required', 'on' => 'tabProceso'),
                                      array('ID_PROGRAMA_AUDITORIA', 'numerical', 'integerOnly' => true),
                                      array('LUGAR_AUDITORIA, ASISTENTES_GLOBALES_AUDITORIA', 'length', 'max' => 100),
                                      array('LIDER_EQUIPO_AUDITOR, AUDITOR_ACOMPANANTE', 'length', 'max' => 150),
                                      array('REQUISITOS_NORMA_DPA,FECHA_AUDITORIA, HORA_INICIO_AUDITORIA, 
                                          HORA_INICIO_FIN', 'safe'),
                                      array('
                                          programaAuditoriaEnsenanzaApredizaje, 
                                          FECHA_AUDITORIA2, 
                                          LUGAR_AUDITORIA, 
                                          LIDER_EQUIPO_AUDITOR, 
                                          HORA_INICIO_AUDITORIA, 
                                          HORA_INICIO_FIN,
                                          casosForm2,', 'required', 'on' => 'tabEnsenazaApredizaje'),
                                      array('
                                          programaAuditoriaSubProcesos, 
                                          FECHA_AUDITORIA3, 
                                          LUGAR_AUDITORIA, 
                                          LIDER_EQUIPO_AUDITOR, 
                                          HORA_INICIO_AUDITORIA, 
                                          HORA_INICIO_FIN,',
                                          'required', 'on' => 'tabSubProceso'),
                                      // The following rule is used by search().
                                      // @todo Please remove those attributes that should not be searched.
                                      array('ID_DETALLE_PROGRAMA_AUDITORIA, ID_PROGRAMA_AUDITORIA, FECHA_AUDITORIA, LUGAR_AUDITORIA, LIDER_EQUIPO_AUDITOR, AUDITOR_ACOMPANANTE, REQUISITOS_NORMA_DPA, HORA_INICIO_AUDITORIA, HORA_INICIO_FIN, ASISTENTES_GLOBALES_AUDITORIA', 'safe', 'on' => 'search'),
                                  );
                              }
                          
                          Ajustes
                           public function rules() {
                                  // NOTE: you should only define rules for those attributes that
                                  // will receive user inputs.
                                  return array(
                                      array('ID_PROGRAMA_AUDITORIA, FECHA_AUDITORIA, LUGAR_AUDITORIA, LIDER_EQUIPO_AUDITOR, HORA_INICIO_AUDITORIA, HORA_INICIO_FIN', 'required','on' => 'tabProceso,tabSubProceso,tabEnsenazaApredizaje'),
                                      array('ID_PROGRAMA_AUDITORIA', 'numerical', 'integerOnly' => true),
                                      array('LUGAR_AUDITORIA, ASISTENTES_GLOBALES_AUDITORIA', 'length', 'max' => 100),
                                      array('LIDER_EQUIPO_AUDITOR, AUDITOR_ACOMPANANTE', 'length', 'max' => 150),
                                      array('REQUISITOS_NORMA_DPA,FECHA_AUDITORIA, HORA_INICIO_AUDITORIA,HORA_INICIO_FIN', 'safe'),
                                      array('programaAuditoriaSubProcesos, FECHA_AUDITORIA3,', 'required', 'on' => 'tabSubProceso'),
                                      array('programaAuditoriaEnsenanzaApredizaje, FECHA_AUDITORIA2,casosForm2,', 'required', 'on' => 'tabEnsenazaApredizaje'),
                                      // The following rule is used by search().
                                      // @todo Please remove those attributes that should not be searched.
                                      array('ID_DETALLE_PROGRAMA_AUDITORIA, ID_PROGRAMA_AUDITORIA, FECHA_AUDITORIA, LUGAR_AUDITORIA, LIDER_EQUIPO_AUDITOR, AUDITOR_ACOMPANANTE, REQUISITOS_NORMA_DPA, HORA_INICIO_AUDITORIA, HORA_INICIO_FIN, ASISTENTES_GLOBALES_AUDITORIA', 'safe', 'on' => 'search'),
                                  );
                              }
                          
                        • Christian Salazar
                          pronto hallaré la forma de poder editar comentarios de facebook desde el sitio web como tal, en vez de entrar a facebook para agregarlo, aunque, recordando si que el post pudo ser facebook, twitter, myBB, rss..en el caso de facebook pues al agregar un comentario debe hacerse mediante el graphApi de facebook, en el caso de twitter usando el api de twitter, y asi.  Espero ir agregando esa funcionalidad de a poco, porque si espero a la comunidad...pasan otros 2 años y nada sucede.
                        • Fernando Ochoa
                          !!!! No pues....

                      • Julian Andres Garzon Morales Ir a la Publicación
                        Buenos días, que vídeo tutorial me recomiendan para configurar cruge, debido a que estoy trabajando con bootstrap y deseo que los formularios y el cgridview de la lista de usuarios tengan el estilo de bootstrap ademas de los botones y demás, muchas gracias buen día para todos
                        • Albert Medina
                          Yii Framework en youtube, elige el que desees
                        • Ivan Salomon
                          Con el Tutorial de CRUGE te sobra. Esta explicado como para un niño de 6 años. Ánimo y a leer...
                        • Julian Andres Garzon Morales
                          si, ya pude configurarlo gracias al tutorial de cruge, la verdad no lo había leído :D

                      • Ariel Rojas Ir a la Publicación
                        por favor alguien que me pueda dar las instrucciones paso a paso para subir un proyecto yii como repositorio a github con git bash, lo intente pero me sale un error de que el repositorio ya exite cuando hago el push
                        • Christian Salazar
                          en la wiki, el foro (sobre todo ahi) hay documentos publicados por nosotros sobre GIT, mas abajo en este post, Ivan Salomon publico un sitio web con info de git.  Leelas todas
                        • Ariel Rojas
                          de acuerdo gracias
                        • Ivan Salomon
                          El mejor tutorial lejos y que publique es http://www.gitimmersion.com/

                      • Ariel Rojas Ir a la Publicación
                        alguien que conosca un hosting gratuito para subir mi proyecto yii, intente con 000webhost pero creo que exedi el limite, mi proyecto pesa 110 MB pero es porque estoy utilizando el bootstrap.
                        • Christian Salazar
                          pero el bootstrap no pesa 110 megas...ni 20, ni 1
                        • Christian Salazar
                          bootstrapes: un conjunto pequeñito de archivos CSS y uno o dos JS...nada mas, si estas llevandote todo el development kit....eso ya es algo de lectura sobre la herramienta.
                          
                          http://www.cniska.net/yii-bootstrap/
                        • Ariel Rojas
                          si tienes razon ya me fije el tamaño y me di cuenta que a carpeta assets es la que esta pesando mas de 90 MB, cual es la funcionalidad de esa carpeta?porque pesa tanto?
                        • Jose Daniel Cifuentes
                          http://www.hostinger.co/
                        • Ariel Rojas
                          me di cuenta que a carpeta assets es la que esta pesando mas de 90 MB, cual es la funcionalidad de esa carpeta?
                        • Christian Salazar
                          lee sobre el framework....te ayudara mucho...hay mucha info sobre assets.
                        • Ivan Salomon
                          Antes de subir borra todo lo que esta dentro de assets.
                        • Botia Julian
                          aws

                      • Ariel Rojas Ir a la Publicación
                        subi un proyecto yii a 000webhost pero me dijeron que tenia que configurar el algunos archivos en yii pero no se cuales son, creo que es sobre la  direccion porque me sale el siguiente error
                        Warning: include() [function.include]: Failed opening '/home/u403541411/public_html//web/CWebApplication.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/u403541411/public_html/yii/framework/YiiBase.php .
                        Como podria solucionar este problema por favor.
                        • Recursos Formacion
                          Mira a ver si esto te ayuda
                          http://www.recursosformacion.com/wordpress/2014/01/yii2-instalando-el-framework/
                        • Christian Salazar
                          JAMAS HAGAS ESTO:
                          /home/u403541411/public_html/yii/framework/
                        • Christian Salazar
                          estas echando a la miex  toda la seguridad del framework al exponerlo al publico,
                        • Christian Salazar
                          si tu hosting es:
                          /home/u403541411/public_html/
                          
                          entonces, tu aplicacion web va ahi:
                          /home/u403541411/public_html/miaplicacion/index.php?r=site/index
                          
                          y, el index.php indicará la ruta del framework fuera de public path:
                          index.php es:
                          
                          $yii='/home/u403541411/privado/yii/framework/yii.php';
                          $config=dirname(__FILE__).'/protected/config/main.php';
                          
                          o alternativamente asi:
                          $yii=dirname(__FILE__)."/../../private/yii/framework/yii.php";
                        • Ariel Rojas
                          gracias amigo lo voy a configurar entonces
                        • Christian Salazar
                          "read the source luke.."
                        • Ivan Salomon
                          Un blanco potencial de ataque si tuviese 15 años menos ;). Ahora ando de sombrero blanco :P
                        • Ariel Rojas
                          hice la configuracion recomendada pero todavia no logro que funcione mi proyecto: configure el index y index-test porque los dos tienen las rutas para que funcione pero sigue saliendo errores: 
                          Warning: require_once(/home/a2877695/public_html/tarea4/../../private/yii/framework/yii.php) [function.require-once]: failed to open stream: No such file or directory in /home/a2877695/public_html/tarea4/index.php on line 12
                          Fatal error: require_once() [function.require]: Failed opening required '/home/a2877695/public_html/tarea4/../../private/yii/framework/yii.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/a2877695/public_html/tarea4/index.php on line 12 , y la verdad busque informacion de como corregir las rutas y no encontre, porfavor cual seria la configuración?
                          mi index es este:
                          <?php
                          
                          // change the following paths if necessary
                          $yii=dirname(__FILE__).'/../../private/yii/framework/yii.php';
                          $config=dirname(__FILE__).'/protected/config/test.php';
                          
                          // remove the following lines when in production mode
                          defined('YII_DEBUG') or define('YII_DEBUG',true);
                          // specify how many levels of call stack should be shown in each log message
                          defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);
                          
                          require_once($yii);
                          Yii::createWebApplication($config)->run();
                        • Ivan Salomon
                          Donde esta ubicado el framework? La ruta completa. Y pega en index
                        • Ariel Rojas
                          esta en public_html al igual que  mi aplicación, y el index-test tengo que configurarlo? jejeje la verdad que me complique en esta parte, proque ahora me sale El alias "ext.bootstrap.components.bootstrap" es inválido. Asegúrese de que apunta a un archivo PHP existente y que el archivo tiene permisos de lectura. Bueno creo que eso de las rutas es complicado no mas, voy a s seguir buscando información.
                        • Ivan Salomon
                          No el index test no. Segun tu config el framework esta DOS directorios atras para llegar a private.yii.framework.yii.php chequea que sea así.
                        • Ariel Rojas
                          mi proyecto lo llame tarea4 ahi adentro esta el protected y demas carpetas, este proyecto tarea4 lo copie al public_html y el yii esta fuera del public_html es decir al mismo nivel.
                        • Ariel Rojas
                        • Ariel Rojas
                          y mi index es el siguiente:
                        • Ariel Rojas
                          los errores que me salen son:
                        • Ariel Rojas
                          en esto estoy dias cambie ya varias cosas  no logre hacerle funcionar, me cuesta enteder sobre las rutas que maneja yii, porfavor si me pueden ayudar un poco mas
                        • Christian Salazar
                          leer leer,
                        • Christian Salazar
                          no hay ningunas "rutas que maneja yii",  es php puro, uso de directorios, como te conté el framework debe estar fuera de public_html, y el index.php debe saber donde esta el archivo yii.php. nada mas.
                          simplemente es un problema por ausencia de troubleshooting y de lectura.

                      • Christian Salazar Ir a la Publicación
                        [POSTEAR MEJOR PARA RECIBIR AYUDA MAS RAPIDO]
                        
                        Titulos de posts punteadores de orto:
                        
                        "hola me estoy reventando con este codigo que me tiene loco y....."
                        "hola necesito ayuda ya no se que hacer y ....."
                        "alguna ayudita por el amor de dios ....."
                        "quisiera saber si alguien en me puede echar una manito ....."
                        
                        Este tipo de post regularmente no recibirán ayuda porque a nadie le gusta leer, ser concreto a la hora de preguntar:
                        
                        "Hola, tengo esta falla en tal o cual parte, aqui va el log"
                        
                        (si....post duplicado, pero hay muchos miembros nuevos).

                        • Julio Cesar Becerra Urbina Ir a la Publicación
                          Hola comunidad, he recibido el requerimiento de implementar un pequeño chat en un sistemita web, Que extensión me recomiendan? No es necesario que el chat guarde la conversación en la base de datos.
                          • Juan David Gomez
                            Amigo creo que la mejor manera de implementar un chat es usando realtime pero con php esto se dificulta un poco soluciones a esto no tan eficientes son  implementaciones con ajax y hacer peticiones constantes para simular realtime
                          • Julio Cesar Becerra Urbina
                            Eso de las peticiones constantes en ajax Mozilla me bloquea por considerar que afecta el rendimiento.
                            Use la extensión yiichat de Yii pero no es lo que busco :/
                            Hay una extensión mjmchat que usa NodeJS de yi tbn pero no se como usarla la verdad :P
                            Gracias por tu comentario (Y) - Ahora me encuentro viendo chats jquery nomás por que con extensiones de Yii ya intenté solo hay 3
                          • Juan David Gomez
                            Si con node puedes hacer uno muy eficiente pero eso ya es otro servidor y otra tecnología diferente
                          • Juan David Gomez
                            Si tienes la forma de instalar node en tu servidor creo que seria la mejor manera, en Internet hay muchos tutorial es de chats en node
                          • Christian Salazar
                            con respeto a los que opinan sobre node js.   hay que usar las herramientas de acuerdo a la cantidad de requests esperados, no usar herramientas por usarlas.  nodeJs te sobrapasa extremada, exageradamente, ultimadamente y degeneradamente en las peticiones, es para otro tipo de desarrollos con un volúmen extremadamente alto, estoy hablando de pull de servidores con una tasa de 1000 peticiones POR SEGUNDO y mas.
                            
                            Para todo lo demás, en donde las peticiones POR MINUTO no superan las 10 o 100 o 1000 (POR MINUTO) entonces basta con usar peticiones estandar.  Para ello, tengo la extensión yiichat, probada en muchos entornos, muy fuerte, basada en yii.
                            
                            Ojo, leanme bien.  No estoy diciendo que "nodejs no sirve y yiichat si"....estoy diciendo que muchas veces por moda y por seguir lo que otro hizo entonces se subutuilizan las herramientas como nodejs.
                            
                            Yo he usado nodeJS, y alternativas de muy bajo nivel, mas bajo que nodeJS, a C puro, en ambientes que no nombraré, pero con peticiones tan taltas como 10.000 por segundo, en equipos de muy bajo rendimiento, y en esos caos es donde nodeJS o similares son validas al 100%.....AQUI Y HOY NO.
                            
                            La gente me ha dicho, "pero con yiichat voy a enviar peticiones ajax a cada rato y ESO COLAPSA EL SERVIDOR". eso no es cierto, estan equivocados, sería cierto solo si las demandas POR SEGUNDO superan las 1000 concurrentes, ahi si colapsa, pero para tener 1000 concurrentes hablo de tener 36.100.000 de conexiones en una hora...osea, medio planeta enchufado...
                            
                            vas a enchufar medio planeta en una hora ? o solo 100 personas maximo en una hora ?
                            
                            decisiones de uso de herramientas se deben basar en la demanda esperada, no en otras cosas.
                          • Christian Salazar
                            http://www.yiiframework.com/extension/yiichat/
                          • Julio Cesar Becerra Urbina
                            Gracias estimado, siempre es bueno ver comentarios basados en experiencias y me ha quedado una visión mas clara sobre Node JS
                          • Christian Salazar
                            ojo..los muchachs no te estan diciendo algo malo, si es bien nodejs, pero sobredimensionado, solo apunto a que antes de meterse a algo saber realmente el alcance esperado,
                          • Christian Salazar
                            la extension yiichat tiene 1900 descargas, 15 votos + y 2 negativos, de algun animal de siempre que vota negativo al no saber usar las cosa o porque le fue mal en algo..., puedes verla e implementarla, es 100% manipulable en estilos y layout, basada en jQuery totalmente.
                          • Julio Cesar Becerra Urbina
                            Hola Christian Salazar, instalé correctamente yiichat con BD, vaya que es sencillo de implementar y está funcionando pero tengo una duda del parametro data del widget (disculpa la ignorancia)
                             'data'=>(12),                 // data passed to the handler
                            Que es lo que tengo que poner o ya no es necesario cuando voy con Base de de datos, es decir con model=>new ChatHandler()
                          • Julio Cesar Becerra Urbina
                            Bueno y también veré la forma de mostrar a los usuarios online.
                          • Christian Salazar
                            data es un valor que pasara por todo el sistema, desde tu setup hasta los eventos.  por ejemplo, si en el widget le dijiste "data=123", entonces cuando llega un evento llega "onXXX(data){ $_123 = $data; }"
                            
                            familiarizate un poco mas con la lectura de las fuentes de informacion que trae el yiichat,
                          • Christian Salazar
                            agrego que:   no es tarea del yichat gestionar usuarios, el solo gestiona una conversacion "entre dos cosas", no necesariamente usuarios, podrias poner a dos sistemas a conversar automatizadamente...la gestion de usuarios la haces tu.
                          • Julio Cesar Becerra Urbina
                            Quiero agradecerle ing, gracias por su tiempo, tengo dos meses en yii y me parece excelente.

                        • Angelika Hernandez Ir a la Publicación
                          Hola...estoy realizando un practica de prestamos de libros...pero quiero que al hacer un prestamo  de un libro me lo descuente de los existentes en la BD, la verdad no se como hacerlo..encontre este codigo pero no me funciona...no me hace el descuento 
                          <script>
                           function calcula(){
                           var Libros_total = document.getElementById('Libros_total').value ;
                           var Prestamo_cantidad = document.getElementById('Prestamo[cantidad]').value ;
                           var Libros_total = (Libros_total) - (Prestamo_cantidad);
                           document.getElementById('Libros_total').value = total;
                           }
                           </script>
                          Alguien puede ayudarme...
                          • Rodrigo Utrera
                            No tengo idea de yii pero cuando restas libros_total - préstamo_cantidad se lo estas asignando a una variable que según tu última línea debería llamarse total
                          • Rodrigo Utrera
                            me explico mejor porque estaba en el movil y es dificil escribir. en la primer linea (var Libros_total = document.getElementById('Libros_total').value ;)estas tomado el valor de un campo que al parecer contiene el total de tus libros, en la segunda (var Prestamo_cantidad = document.getElementById('Prestamo[cantidad]').value ;) la cantidad de libros a prestar. luego estas declarando otra variable que, desde mi punto de vista es erronea ya que asignas el mismo nombre que la primera linea. ahi la deberias llamar solo total a la variable. y lo que hace en la ultima linea es que al campo libros_total se le asigne el valor de la resta con una variable total.
                          • Angelika Hernandez
                            mmm quedaria asi...???<script>
                             function calcula(){
                             var Libros_total = document.getElementById('Libros_total').value ;
                             var Prestamo_cantidad = document.getElementById('Prestamo[cantidad]').value ;
                             var total = (Libros_total) - (Prestamo_cantidad);
                             document.getElementById('Libros_total').value = total;
                             }
                             </script>
                          • Vladimir Leuyacc
                            Trabajalo desde el controller de esa vista... En la función create.. :)
                          • Oscar Cortez
                            Ese script solo afectara la vista. Pq es javascript. La base de datos (persistencia de datos) ni se entero del préstamo. Jejeje.
                          • Rodrigo Utrera
                            claro, ahi solo estas manejando la vista... luego deberias actualizar la base de datos
                          • Oscar Cortez
                            Update inventario-libro set cantidad = cantidad - (input) cantidad-libros-prestados where id-libro = (input) id-libro. (Hacer esto n veces. En un prestamo uno puede prestarse distintos libros)
                            Update prestamo-libro set estado = 'devuelto' (anteriormente en 'prestado') where id-prestamo = (input) id-prestamo 
                            Estoy en la movi. Y es dificil escribir. En la db seria algo asi
                          • Angelika Hernandez
                            ok ok tratare de hacerlo Oscar Cortez
                          • Cesar Gago Egocheaga
                            Vladimir Leuyacc ayudala!
                          • Vladimir Leuyacc
                            Xd aún no me dice :3
                          • Miguel Jaimes
                            Porque no usas Jquery ? var Total= $('#Libros_total).val()-$('#Prestamo_cantidad).val();  $('#Libros_total).val(Total);
                          • Angelika Hernandez
                            Disculpa Oscar Cortez  en relacion alo que me comentaste en mi controlador y modelo no tengo que agregar  codigo???
                          • Oscar Cortez
                            Si. Bueno. Despues de crear tu base de datos bien relacionada. (Yo uso mysql workbench). Debes utilizar gii (generador de codigo de yii). Creas el modelo y si quieres tb las vistas (crud). Despues de eso ya es entenderle el código generado. Para mejorar la vista (frontend) podrias usar yiibooster (bootstrap 3 para yii). Las vistas y funcionalidad mejoran sobremanera.
                          • Vladimir Leuyacc
                            -.-

                        • Miguel Prieto Ir a la Publicación
                          Me recomiendan de donde descargas temas/plantillas para Yii

                          • Ivan Salomon Ir a la Publicación
                            [APORTE] Para los que esten interesados en aprender o refrescar conocimientos en GIT (control de versiones) les recomiendo esta web. Creo que ninguno que este diseñando una app sea en Yii o cualquier otro framework o lenguaje, debe dejar de utilizar un control de versiones.
                            Saludos Grupo
                            http://gitimmersion.com/
                            • Miguel Ángel Lucas Sánchez
                              ¡Tarea pendiente! Lo se Esteban, lo se...
                            • Esteban Adrián P
                              Así es Miguel, y te urge aprenderlo
                            • Miguel Ángel Lucas Sánchez
                              :(
                            • Esteban Adrián P
                              No seas "corima" >_<
                            • Max Blammo
                              Actualmente tengo implementado 1 servidor con #gitlab para llevar todos los desarrollos adelante , es simple de implementar y configurar. Ademas tiene su propio sistema de backups. Recomendado! Se puede correr en vps o en una pc con  1GB de Ram minimo.. para trabajar tranquilo.
                            • Esteban Adrián P
                              DEMASIADO 1gb para un server multipropósito (estoy luchando con Zentyal, voluntarios bienvenidos y ya es OFF TOPIC)
                            • Max Blammo
                              Yo lo he corrido con 512.. pero si los repo son grandes..  o los usuarios  muchos.. mejor 1gb.. aunque todo depende de como lo configures.. yo lo tunee al nginx y fue bien con menos ram.. Zentyal.. mmm.. Si es para Dev, tal vez te convenga zpanel, Yo tengo un Server para cada cosa.. Un Gitlab para los repo, un zPanel para las web en desarrollo con dominio propio.dev en Lan, uno para backups de MySQL que se sincroniza por las dudas de que caiga dev..  Je..y bue.. Es la enfermedad de tener Servers... Todo respaldado al mango
                            • Esteban Adrián P
                              Para no intoxicar, te respondo por privado, Gracias Max :)
                            • Ivan Salomon
                              Esteban Adrián P ya vamos a ver eso... los tiempos son tiranos
                            • Esteban Adrián P
                              Calma Ivan, :D
                            • Christian Salazar
                              complementen esta lectura por la existente en el foro, hay un articulo ahi que esteban editó (o hizo traducción de) acerca de una publicación qu conseguimos anteriormene,
                            • Ivan Salomon
                              Hoy lei unos tutos de Kurt Klement que hasta hace git version de sus DB. Me parecio excelente idea...
                            • Christian Salazar
                              de los scripts de la db si
                            • Ivan Salomon
                              Y tambien de la DB en si. La carpeta DATA!!! claro en local, sino seria un desperdicio.... Para desarrollo me parecio bueno.
                            • Esteban Adrián P
                              Gracias Christian!, ya me había olvidado... :)
                              http://www.yiiframeworkenespanol.org/foro/showthread.php?tid=144&highlight=GIT

                          • Aracelly Collazos Ir a la Publicación
                            Hola.... necesito mostrar un dialogo de confirmación al hacer click sobre el botón de un cgridview dependiendo de la respuesta se realiza o no la acción correspondiente, esto se logra con la siguiente línea: 
                            
                            'click'=>'function(){return(confirm("Esta seguro de realizar esta acción?"));}',
                            
                            Mi problema es que quiero que la apariencia del dialogo se muestre en un modal, para esto pensé que podía utilizar  esta línea: 
                            
                            'click'=>'function(){return(bootbox.confirm("Esta seguro de realizar esta acción?"));}',
                            
                            pero no funciona, ya verifique que el problema no esta en la extensión del bootbox,esta funciona adecuadamente, que puedo hacer?? ayuda por favor!!
                            • Roberto Cruz
                              Pues si no te gusta la forma el confirm de javascript, puedes usar una ventana modal de bootstrap
                            • Christian Salazar
                              este ejemplo con fancybox fue diseñado para otra cosa pero tiene lo que necesitas para guiarte. lo de bootstrap dialogbox tambien es valido, esta es solo otra via.
                              
                              http://yiiframeworkenespanol.com/wiki/index.php?title=CrugeFancybox