2012-03-15 12 views
3

GiiでCRUDを作成しましたが、アクセスルールが変更されましたが、ユーザーデータを更新できません。他Yii crud update error 400

public function accessRules() 
{ 
    return array(
     array('allow', 
     'users'=>array('@'), 
     'expression'=>'!$user->isGuest && Yii::app()->user->privilages >= 5 && Yii::app()->user->status == 1', 
     ), 
     array('deny', 
     'users'=>array('*'), 
     ), 
    ); 
} 

すべてがデフォルトのようですが、私は管理するユーザーテーブルの上に鉛筆のアイコンを押すと、私はこのエラーを取得する:ここで私が変更したものです

Error 400 
Your request is invalid. 

とURLは次のとおりです。

http://www.example.com/admin/update/35 

私は間違っていますか?

答えて

6

このエラーは、accessRulesアレイのためではありません。対応するアクションが正しく指定されていることを確認し、アクションのパラメータが正常かどうかを確認します。設定ファイルでurlルール(urlManager)をチェックし、リンクから正しくパラメータを送信しているかどうかを確認します。

Yii::app()->userの代わりに直接$userを使用することもできます。

認証エラーがある場合は、エラー403を得るこれは400です:

400 Bad Request The request cannot be fulfilled due to bad syntax.

編集: はあなたのurlManagerにこれを追加します。

'rules'=>array(
     '<controller:\w+>/<id:\d+>'=>'<controller>/view', 
     '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>', // this is the rule you absolutely need for update to work 
     '<controller:\w+>/<action:\w+>'=>'<controller>/<action>', 
     '<action>'=>'site/<action>' 
), 
+0

はい、あなたは正しいです、私は問題がURLのためにあったことを知っています、35は$ idとして設定されていないので、今私はこのisueを解決するためにurlManagerを編集する方法に取り組んでいます – Irakli

+1

正しく動作させるためのコード。つまり、第2のルールは更新作業を行う上で重要です。そのようなURLを使用してください。 –

+1

ありがとう、魅力的な作品です。ありがとうございました。 – Irakli

0

あなたは

間違った権限を綴りました

使用

$user->privileges 

代わりに

Yii::app()->user->privilages 
6
/** 
* @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によってアクセスすることができます。 これを確認できます。

+0

私はどのように私はidを渡すことによって削除することができます助けることができます私はすでに私のフィルタで同じコードを持っています上記のどのようにこの状況で克服する方法を教えて? – user3233280