php framework Yii non reindirizza correttamente con la funzione CController:: redirect()



yii manual (1)

In un sito che sto creando, ho una pagina con l'URL http://localhost/administrator/restaurant/list che mostra l'elenco dei ristoranti in formato tabellare insieme a un pulsante di eliminazione. Il pulsante Elimina punta a http://localhost/administrator/restaurant/delete/<id> .

L' actionDelete del mio controller è la seguente:

public function actionDelete(){
        $model = Restaurants::model()->findByAttributes(
                                        array(
                                            'id'=>$_GET['id'],
                                            'clientId'=>Yii::app()->user->clientId
                                        ));
        $model->delete();
        Yii::app()->user->setFlash('success',Yii::t('error','Restaurant has been deleted successfully'));
        $this->redirect('restaurant/list',true);
    }

Ma facendo clic sul pulsante Elimina, la riga viene eliminata correttamente dal database ma invece di reindirizzare a http://localhost/administrator/restaurant/list la pagina sta reindirizzando a http://localhost/administrator/restaurant/delete/restaurant/list e mostra un errore. C'è qualcosa di sbagliato nel modo in cui ho implementato la funzione di reindirizzamento?


Answer #1

Usa invece il routing dell'array:

$this->redirect(array('restaurant/list'), true);

L'utilizzo di GET per l'eliminazione è una pessima idea perché i browser possono eseguire il precaricamento dei collegamenti prima ancora di fare clic su di essi. Dovresti usare POST per qualsiasi scenario come questo.





yii