如何在所有控制器中使用控制器的操作

Posted

技术标签:

【中文标题】如何在所有控制器中使用控制器的操作【英文标题】:how to use a controller's action in all controllers 【发布时间】:2013-10-25 13:39:16 【问题描述】:

我有一个动作可以呈现search 视图来进行搜索,如本网站的上述搜索栏,因此它应该显示在每个视图中。

我不知道这样做的机制是什么。例如,如果我将搜索操作作为一个小部件,这将不会很好,因为搜索结果将显示在搜索小部件的相同位置(在网站顶部)。

那么,我怎样才能做出应该在网站的每个视图中显示的搜索操作?

【问题讨论】:

【参考方案1】:

为了resue相同的搜索功能无处不在,你需要创建一个小部件。 我已经在简要说明How a widget works,那么您可以在您希望每个视图附加。 P>

如果你没有任何想法开始,检查了这一点:Yii ESearch P>

下面是一些参考,这将是有用的:

how-to-use-a-widget-as-an-action-provider

actions-code-reuse-with-caction/

Yii Widget

【讨论】:

如果我插件时,其结果将出现在该位置,其中予使用的搜索小插件,它是网站的顶部。跨度> 这种情况是一个必须灵活地处理。你可以进入你的搜索小窗口的选择(如身份证)html标签(如格),你想显示的搜索结果中,每次搜索按钮被点击,它会通过Ajax请求,获取搜索结果,并把它们所有进入通过选择器。跨度> 我想提出一个名为结果页面的结果,是可以张贴? SPAN> 【参考方案2】:

如果你想为每个视图添加一些东西,那么你应该将它添加到布局中。听起来你根本不需要使用小部件,尽管它可能有助于代码的可维护性。

您从未提到对 ajax 的要求,因此请保持简单,不要使用它。当有人输入搜索并单击提交(或按回车键)时,表单将提交到 SearchController。这样就不需要在每个控制器中都有搜索操作。

如果您特别希望在每个控制器中执行相同的操作,则创建一个包含该函数的 Controller 基类,并从它继承以创建所有其他控制器。

【讨论】:

以上是关于如何在所有控制器中使用控制器的操作的主要内容,如果未能解决你的问题,请参考以下文章

跨多个控制器更新对象/模型

在多个控制器之间传递/更新变量的值

如何将相同的 UIButton 添加到 iphone 中的所有视图控制器的导航栏?

在 ASP.NET MVC 中:从 Razor 视图调用控制器操作方法的所有可能方式

如何向所有 UIViewControllers 添加一个通用的浮动操作按钮

跨多个控制器更新对象/模型