5

Yiiのレコードを削除しようとしていますが、エラー400がスローされます。このリクエストを再度繰り返さないでください。投稿変数をチェックしています。コントローラーファイルには
if(Yii::app()->request->isPostRequest)
空白がありますが、$ _ GETには削除するIDがあり、ビューファイルは次のようになります。

echo CHtml::link(CHtml::encode('Delete image'), array('image/delete', 'id'=>$image->id), array('class' => 'delete','confirm'=>'This will remove the image. Are you sure?'));

アクセスルールには、認証されたユーザーに対する削除が含まれています。これは正しいことです。*も試してみました。また、隠れた変数として送信してみましたが、うまくいきませんでした。

Yiiにフォームを投稿する方法がわかりません。

4

4 に答える 4

15

これは、POSTリクエストではないために発生しています。CHtml::linkgetの代わりにpostメソッドを使用できる方法があります。submitこれには、の属性を使用する必要がありclientChangeますhtmlOptions

ややこのように:

echo CHtml::link(CHtml::encode('Delete image'), array('image/delete', 'id'=>$image->id),
  array(
    'submit'=>array('image/delete', 'id'=>$image->id),
    'class' => 'delete','confirm'=>'This will remove the image. Are you sure?'
  )
);
于 2012-08-21T06:28:04.710 に答える
10

カードのデフォルトは次のようになります

/**
 * @return array action filters
 */
public function filters()
{
    return array(
        'accessControl', // perform access control for CRUD operations
        'postOnly + delete', // we only allow deletion via POST request
    );
}

削除アクションには、POSTでのみアクセスできます。確認できます。

したがって、「postOnly + delete」を使用するには、この行を削除する必要があります。

于 2013-01-03T14:28:13.410 に答える
1

私の経験によると、これはjqueryの後にロードされたいくつかのjavascriptファイルが原因です。ドキュメントの最後にjQueryリンクがある場合は、それを削除してください。

于 2014-03-17T18:51:01.270 に答える
0

actionDelete()にはこれをスローするコードが含まれていると思いますが、AJAX呼び出しに依存するかどうかはわかりません。関連するactionDelete()を確認してください

于 2012-08-21T06:11:52.867 に答える