Diferencia formulario creado por medio de Widget y formulario creado por medio de la clase CHtml

Cordial Saludo

Quisiera saber cuál es la diferencia concreta entre los formularios creados por medio de "beginWidget" más ó menos como lo siguiente:


<?php $form=$this->beginWidget('CActiveForm', array(

	'id'=>'participante-form',

	'enableAjaxValidation'=>false,

)); ?>

y los formularios creados por medio de la clase "CHtml" más ó menos como lo siguiente:


<?php echo CHtml::beginForm(); ?>

Quedo atento a sus comentarios.

Muchas gracias.

Estimado,

El formulario creado por widget corresponde a un CActiveForm, el cuál cuenta con ciertas características que facilitan el trabajar con formularios que están relacionados con modelos de datos. Esto permite, entre otras cosas, llevar a cabo validación de los campos sin mayor dificultad (gracias a los validadores incorporados por yii, además de poder personalizar validadores propios).

Te recomiendo privilegiar el uso de CActiveForms salvo que el formulario que quieres crear sea muy básico. Si un formulario no se relaciona directamente con una entidad (tabla) de tu base de datos, igual puedes aprovechar las ventajas de CActiveForm al crear modelos de la clase CFormModel (fíjate en models/ContactForm.php, que se crea junto con la estructura básica de una webapp).

Por otro lado, el método beginForm() simplemente crea un tag "<form>", no da ninguna funcionalidad especial al formulario. Además, debes cerrar manualmente el tag al final ("</form>")

Hola a todos, soy nuevo en yii. Estoy acostumbrado a programar en PHP puro, utilizar mis propias funciones, jquery, etc. Y estoy haciendo mis inicios en Yii pero tengo varias dudas.

Por ejemplo tengo una tabla noticias y otra carrusel. He creado mis CRUD con gii. Pero quisiera modificar los formularios que me ha creado automáticamente.

Qué puedo hacer para agregar nuevos inputs que no necesariamente estén basados en la tabla ? Por ejemplo un radio button para saber si al momento de guardar me lo debe agregar a la tabla carrusel también.

Además como puedo modificar ciertos inputs por ejemplo el campo de contenido que en lugar que sea un textarea sea un editor HTML como WYSIWYG. o que el input para la fecha sea un text pero que al darle clic se muestra un calendario como en Jquery. Lo mismo para los que servirán para subir archivos.

Gracias se que la pregunta es larga, espero que puedan orientarme por donde ir

hola, te recomendaría lo siguiente:

primero crea un formulario estandar con Yii y aprende a usarlo primero con lo que el ya trae (lo que Yii ofrece para controlarlo), observa el código fuente generado en el browser, y te darás cuenta por tu misma cuenta de qué es lo que hace Yii con el.

Como indica el POST arriba, lee mas acerca de CActiveForm ya que en lo absoluto no tendrás que crear nada a mano, por muy complicado que esto sea, ya que el framework te permite hacer casi cualquier cosa sin salirse del esquema, el error sería subutilizar el framework y empezar a "echar codigo" reinventando lo que ya Yii trae de forma muy solida.

Como última recomendación, y ya que estas empezando según veo, dale una semana de estudio denso a yii y tu mismo te responderás ya que tu pregunta deriva en que no conoces el framework y requieres un uso que implica conocerlo mejor.

no se si sea muy tarde para responder, pero puedes ir a ‘/protected/views/nombreModelo/_form.php’ y ahí modificar lo que necesites del formulario, además de agregar nuevos inputs y en ‘protected/controllers/nombreModeloController.php’ y en la acción ‘actionCreate’ definir las reglas para los nuevos inputs

Como dice bluyell primero desarrolla los tutoriales que están en la sección documentación, esto te ayudara a comprender como funciona el framework y te ayudara a sacarle el mayor provecho.