Interactuando Con La Db Con Ajax

Buenas, mi problema es el siguiente, yo necesito que en el sidebar de la página aparezcan los tweets de un usuario (esto ya lo hice) pero el usuario que está logeado en el momento tiene el "privilegio" de "esconder" sus tweets, lo cual primero tengo que grabar ese registro en la db para cuando lo quiera volver a mostrar este aparezca sin ningun problema, eso tengo que hacerlo mediante Ajax (esconder y mostrar el tweet)

aqui está el código de mi view




<?php

/* @var $this UserController */

/* @var $model User */


//registering jQuery 

Yii::app()->clientScript->registerCoreScript('jquery');


?>

<h1>User: <?php echo $model->username; ?></h1>


<h2>Entries</h2>

<ul>

  <?php foreach($model->entries as $entry):?>

    <div class="view">

      <li class="entries"><h2> <?php echo $entry['title']; ?> </h2></li>

      <li class="entries"><?php echo $entry['content']; ?></li><br/>

      <li class="entries">Created on <?php echo date("d M - g:i A ",strtotime($entry['creation_date'])); ?></li><br/>

    </div>

    <?php endforeach; ?>

</ul>

<?php $this->beginWidget('system.web.widgets.CClipWidget', array('id'=>'sidebar')); ?>

<h1>Tweet Feed</h1>

<ul>

  <?php $form=$this->beginWidget('CActiveForm', array('id'=>'hide-tweet',)); ?>

    <?php $i=1; foreach($tweets as $tweet):?>		

      <div id="tw-<?php echo $i; ?>">

	<h1><?php echo $tweet->id_str; ?></h1>

	<div class="view">

	  <li class="entries"><?php echo '<b>'.$tweet->user->name.'</b> @'.$tweet->user->screen_name.'  '.date("d M",strtotime($tweet->created_at)); ?></li><br/>

	  <li class="entries"><?php echo $tweet->text; ?></li>						

	  <?php if($model->usr_id == Yii::app()->user->Id):?>

	  <br/><li class="entries">

	    <?php echo CHtml::ajaxLink(

	    'Click',

	    array('tweet/create'),

	    array(

	      'update'=>'#content',

	      'type'=>'POST',											

	      'dataType'=>'json',

	      'data'=>array(

	      'tw_tweet_id'=>$tweet->id_str,

	      'tw_author'=>$model->usr_id,

	      'tw_name'=>$tweet->user->name,

	      'tw_creation_date'=>$tweet->created_at,

	      'tw_content'=>$tweet->text,

	       ),

              ));

	   ?>

	 </li>

	<?php endif; ?>

	</div>

     </div>		

    <?php $i++; endforeach; ?>

   <?php $this->endWidget(); ?>

</ul>

<?php $this->endWidget();?>



y acá el código de mi accion tweet/create




public function actionCreate()

	{

		$model=new Tweet;


		// Uncomment the following line if AJAX validation is needed

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


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

		{

			echo "arrived at controller!!!";

			var_dump($_POST['Tweet']);

			//$model->attributes=$_POST['Tweet'];

			//if($model->save())

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

		}


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

			'model'=>$model,

		));*/

	}



Cabe destacar que la vista es de un controlador diferente al de los tweets, es la vista de los usuarios donde me muestra sus entradas y los ultimos 6 tweets que este ha hecho (tomados desde twitter).

Creo que estoy haciendo algo malo ya que el manda la información, porque en el firebug tengo una respuesta 200 OK, lo que entiendo que manda el POST, pero no llega a la accion tweet/create ya que no imprime el "echo" ni tampoco hace "var_dump", si es posible me gustaría que alguien me de algo de luz en este tema de Ajax.

Muchas Gracias.

Me acabo de dar cuenta que al hacer en el controlador var_dump($_POST) solamente si me da la información que mandé, como puedo hacer para que ese form me retorne $_POST[‘Tweet’]? ya que aunque la mande así sola no me guarda el registro en la DB :confused:

Bueno ya se como hacer para que retorne $_POST[‘Tweet’]




'data'=>array(

    'Tweet'=>array(

      'tw_tweet_id'=>$tweet->id_str,

      'tw_author'=>$model->usr_id,

      'tw_name'=>$tweet->user->name,

      'tw_creation_date'=>$tweet->created_at,

      'tw_content'=>$tweet->text,

    ),

),



Pero aún así no grabo los datos en la BD, revisando con el firebug me di cuenta que los formularios creados por Yii ademas de los parametros que uno le da, manda otro parámetro yt0 con el nombre de la acción, como podría hacer para que mi información se guarde?

Prueba con esto:




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



Pasa todos los atributos ‘seguros’ que ha introducido el usuario al modelo.

Por seguros se entiende que cumplen las rules en el modelo, si no tienen que cumplir ninguna rule añadir simplemente la regla




array( 'atributo1,atributo2,...', 'safe', 'on'=>'search' ) //si es en escenario search

array( 'atributo1,atributo2,...', 'safe' ) //si es en todos los escenario



Suerte

Gracias, efectivamente era eso que no estaba pasando todos los atributos!