【问题标题】:Use a controller class as a helper or model使用控制器类作为助手或模型
【发布时间】:2014-10-15 15:42:35
【问题描述】:

我有一堆控制器,即usersadminguest,我在admin 控制器上有很多我想在users 上使用的功能。由于访问控制器意味着重定向它,我希望这种行为不要发生,所以问题是

  • 我可以使用像助手/模型这样的控制器并加载它吗?像助手/模型一样加载它对我来说会更容易,因为有很多控制器,我不想添加新文件。

我还是 C 的新手。请指导我。

【问题讨论】:

标签: codeigniter


【解决方案1】:

你可以创建辅助类来执行一些逻辑,你可以在控制器或视图中调用它们。我不知道是不是你想要的。 例如,我创建了一个名为 Repository(存储库模式)的文件夹,我在其中实现了例如呈现菜单的逻辑:

 public class reposAccount
 {
    public static List<Sp_ShowMenuList_Result> ShowMenuList(int RoleID)
    {
            myEntities db = new myEntities();
            List<Sp_ShowMenuList_Result> ListShowMenu = db.Sp_ShowMenuList(RoleID).ToList();
            return ListShowMenu;

    }
 }

而在视图上,我只是称之为“助手”:

 if (HttpContext.Current.User.Identity.IsAuthenticated)
{
   //do some preparatory activities, then i call the helper:
    foreach (var obj in reposAccount.ShowMenuList(RoleId).Where(z => z.ParentMenu == null).OrderBy(z => z.MenuOrder).ToList())
    {
        @: <li>@Html.ActionLink(obj.MenuName, "Index", obj.Controler_Name)</li>
    }
}

相同的行为或方法,您可以在每个控制器上调用它们。

【讨论】:

    【解决方案2】:

    您可以使用它作为普通模型或库加载它

    $this-&gt;load-&gt;library()

    这是您可能想查看的SIMILAR QUESTION,您正在寻找的答案是第三个。

    注意:

    如果您使用的是 CI3,这将不起作用。如果您还阅读 cmets,它会很有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-10
      • 1970-01-01
      • 2010-12-08
      • 1970-01-01
      • 1970-01-01
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多