2009-11-16 140 views
1

呼叫控制器功能我需要一些幫助鑑於蛋糕PHP

這是當我在我的index.ctp/view.ctp,我需要調用我的控制器功能來執行一些任務。我可以使用什麼代碼來執行此操作?

  • 我需要調用我的控制器函數,該函數發送一個值(user_id)給該函數並給我一個特定的動作。我怎樣才能做到這一點?我也可能在JavaScript函數中調用。

回答

11

如果您需要從視圖中調用Controller函數,那麼您做錯了。這是不正確的MVC。

話雖如此,requestAction將是適當的,儘管這是最慢的方法。你可以進一步攻擊並獲得ClassRegistry的控制器實例。但是我會認真地推薦你重新構建你的程序流程,所以你不需要從頭開始。

0

如果您的任務沒有產生任何輸出 - 您可能要考慮在控制器中執行此操作,然後才能進入視圖階段。

如果你的任務都有某種形式的輸出 - 使用requestAction與視圖元素

  1. http://bakery.cakephp.org/articles/view/creating-reusable-elements-with-requestaction

這種聯繫應該是一個很好起點。 Mark Story在他的博客上也有很好的帖子,詳細描述了requestAction的實際性能,如果你不會在整個地方濫用它,它確實不是那麼糟糕。

  1. http://mark-story.com/posts/view/how-using-requestaction-increased-performance-on-my-site
  2. http://mark-story.com/nodes/view/reducing-requestaction-use-in-your-cakephp-sites-with-fat-models

如果你真的需要觸發某種邏輯的可預測的方法和邏輯可能在多個地方發生,你也可以使用事件觀察者模式觸發您需要運行的控制器操作。

  1. http://cakealot.com/2009/04/eventful-a-cakephp-event-system/