CakePHP - 集中控制器逻辑

发布于 2024-12-08 21:19:08 字数 261 浏览 0 评论 0原文

使用 CakePHP,我发现我在控制器操作之间复制了一些代码。我有十几个左右的操作(属于不同的控制器),它们都需要运行相同的查询和 set() 相同的 10 个变量以在特定布局中使用。他们还需要以相同的方式处理任何错误并呈现错误页面。

我知道组件旨在集中控制器之间使用的逻辑,但就我而言,此逻辑需要访问控制器的 set()render() 方法。对于这种情况,建议采取什么方法?

谢谢,布莱恩

Using CakePHP, I am finding that I'm duplicating some code between controller actions. I have a dozen or so actions (belonging to various controllers) that all need to run the same query and set() the same 10 variables for the use in a particular layout. They also need to handle any errors in the same way and render an error page.

I know that components are intended to centralize logic used among controllers, but in my case, this logic needs access to the set() and render() methods of the controller. What is the suggested approach to this situation?

Thanks, Brian

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

始终不够 2024-12-15 21:19:08

将逻辑放入您的控制器应从中扩展的 AppController 类中。

查看文档: http://book.cakephp.org/view/957/应用程序控制器

Put the logic in your AppController class which your controller should extend from.

Check out the docs: http://book.cakephp.org/view/957/The-App-Controller

挽清梦 2024-12-15 21:19:08

最终在这个层上滚动了我自己的业务逻辑层。下面的例子。欢迎想法/评论。

class MyController extends AppController {

  public function my_action() {

     //  The BLL class is specific for this action and gets the entire 
     //  controller so has access to the set() method as well as components.
     $this->Bll = new MyActionLogic($this);
     $this->Bll->do_whatever();
  }
}

Ended up rolling my own sort of business logic layer on this one. Example below. Thoughts/comments welcome.

class MyController extends AppController {

  public function my_action() {

     //  The BLL class is specific for this action and gets the entire 
     //  controller so has access to the set() method as well as components.
     $this->Bll = new MyActionLogic($this);
     $this->Bll->do_whatever();
  }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文