2011-04-01 66 views
2

是否可以根据请求是否是AJAX来告诉CakePHP加载不同的组件/助手?仅当请求不是AJAX时才包含CakePHP组件?

显然你不能使用RequestHandler :: isAjax,因为RequestHandler本身就是一个组件!

我的担心是性能 - 我是否认为装载所有组件(我在大多数控制器中大约有4-6个)会对速度造成阻碍?

我想到的一个想法是创建一个AjaxController,使用最少的组件和没有帮助程序,但是这看起来有点脏?

感谢

回答

1

我建议你使用默认的RequestHandlerComponent,让在需要时加载其他组件。只加载RH组件不会影响您的系统。在任何情况下,您都不应该尝试微调优化这些东西。

此外,根据您有哪种JS设置,大多数JS库会发送一个X-Requested-With,其值设置为XMLHttpRequest。你也可以找到它。

就我个人而言,我认为RequestHandlerComponent是最好的方法。

+0

谢谢,根据你的建议,我只包含了RequestHandlerComponent和没有助手。在AppController :: beforeFilter中,我检查请求类型,如果它不是ajax,则加载我需要的组件和帮助程序。 – Will 2011-04-01 15:43:51

相关问题