0

依存ドロップダウンを作成していますが、すべてうまくいきます。

CHtml::dropDownList('country_id','', array(1=>'USA',2=>'France',3=>'Japan'),
array(
'ajax' => array(
'type'=>'POST', //request type
'url'=>CController::createUrl('ajax/subcategories'),
'update'=>'#city_id', //selector to update
)));

AjaxController.php

class AjaxController extends Controller
{
...
}

ここで、「mydomain.com/ajax/subcategories」という URL を非表示にしたいと考えています。誰かがこの URL に直接アクセスしようとすると、404 エラー ページが表示されます。これは可能ですか?

4

1 に答える 1

0

POST ajaxリクエストを発行している場合(あなたがそうであるように見えます)、次のようなチェックでアクションをラップできます。

class AjaxController extends Controller {
  public function actionSubcategories() {
    if(Yii::app()->request->isPostRequest) { // check if POST
       // your action logic goes here
    } else { // direct URL request will be GET, so show error
      throw new CHttpException(404, Yii::t('app', 'Invalid request.'));
    }
  }
}

そのURLに対する通常の「直接」リクエストはGETリクエストになるため、404エラーが表示されます。

于 2011-10-30T16:54:34.427 に答える