Delete, Errore 400

Ho da poco iniziato lo sviluppo di un gestionale, è da un po’ che sbatto la testa su questo problema e non so a che santo votarmi.

Mi spiego.

Per l’azione di delete volevo usare un pannello modale preso da yiiboster

e il mio codice è del tipo




        $url = CController::createUrl("delete", array("id"=>$model->user_id));

	$this->widget('bootstrap.widgets.TbButton', array(

		'label'=>'Confirm Modal',

		'type'=>'warning',

		'htmlOptions'=>array(

			'onclick'=>'js:bootbox.confirm("Are you sure?",

			function(confirmed){

                if(confirmed) {

                   window.location = "'.$url.'";

                }

             })'

		),

	));



Il problema mi è chiaro, in questo modo sto generando una richiesta in GET anziché in POST, e per questo ottengo "Error 400,Your request is invalid."

Come posso fare?

[size=2]Perchè alla conferma fai un window.location ?[/size]

Hai inserito il consenso nel metodo accessRules() all’action che dovrà cancellarti il record?

grazie di aver risposto ;)

quote name=‘messema’ post=‘216321’]

Perchè alla conferma fai un window.location ?

[/quote]

Perché volevo usare il metodo "delete" del controller, che se accettasse richieste in GET basterebbe un redirect a user/delete/mio_id

Intendi se nelle accesRules() del controller c’è il metodo delete? Se è così si, è come da default (ho solamente modificato il corpo del metodo in modo da effettuare un soft delete)

Per ora ho risolto inserendo una chiamata ad un metodo soft_delete(), facendo poi un redirect alla pagina admin (che nel mio caso si chiama adminP), in questo modo


$url = CController::createUrl("adminP");

	$this->widget('bootstrap.widgets.TbButton', array(

		'label'=>'Elimina',

		'type'=>'warning',

		'htmlOptions'=>array(

			'onclick'=>'js:bootbox.confirm("Sei sicuro di voler eliminare la scheda di '.$model->completeName().'?",

			function(confirmed){

                if(confirmed) {

                   "'.$model->soft_delete().'";

				   window.location = "'.$url.'";

                }

             })'

		),

	));

però, seppur funzionante, non mi sembra una scelta "elegante" perché si tratta di un compito che spetta al controller e non al model…

Dove ti reindirizza?

Se mettessi qualcosa del genere?




window.location.href="index.php?r=tuocontroller/tuaaction&id='.$model->id.'";



potresti pure utilizzare un CHtml::link