是否可以根据请求是否是AJAX来告诉CakePHP加载不同的组件/助手?仅当请求不是AJAX时才包含CakePHP组件?
显然你不能使用RequestHandler :: isAjax,因为RequestHandler本身就是一个组件!
我的担心是性能 - 我是否认为装载所有组件(我在大多数控制器中大约有4-6个)会对速度造成阻碍?
我想到的一个想法是创建一个AjaxController,使用最少的组件和没有帮助程序,但是这看起来有点脏?
感谢
是否可以根据请求是否是AJAX来告诉CakePHP加载不同的组件/助手?仅当请求不是AJAX时才包含CakePHP组件?
显然你不能使用RequestHandler :: isAjax,因为RequestHandler本身就是一个组件!
我的担心是性能 - 我是否认为装载所有组件(我在大多数控制器中大约有4-6个)会对速度造成阻碍?
我想到的一个想法是创建一个AjaxController,使用最少的组件和没有帮助程序,但是这看起来有点脏?
感谢
我建议你使用默认的RequestHandlerComponent,让在需要时加载其他组件。只加载RH组件不会影响您的系统。在任何情况下,您都不应该尝试微调优化这些东西。
此外,根据您有哪种JS设置,大多数JS库会发送一个X-Requested-With
,其值设置为XMLHttpRequest
。你也可以找到它。
就我个人而言,我认为RequestHandlerComponent
是最好的方法。
谢谢,根据你的建议,我只包含了RequestHandlerComponent和没有助手。在AppController :: beforeFilter中,我检查请求类型,如果它不是ajax,则加载我需要的组件和帮助程序。 – Will 2011-04-01 15:43:51