Php Ajaxyii

Php Ajaxyii,php,yii,yii-components,Php,Yii,Yii Components,我正在创建一个依赖下拉列表&一切对我来说都很好 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'

我正在创建一个依赖下拉列表&一切对我来说都很好

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
{
...
}

现在我想隐藏url“mydomain.com/ajax/subcategories”。如果有人试图直接访问此url,它将显示404错误页面。这可能吗?

如果您正在发出一个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错误