Codeigniter 将控制器类用作辅助对象或模型

Codeigniter 将控制器类用作辅助对象或模型,codeigniter,Codeigniter,我有很多控制器,比如,用户,管理员和来宾我在管理员控制器上有很多功能,我想在用户上使用。因为访问控制器意味着重定向它,我希望这种行为不会发生,所以问题是 我可以像助手/模型一样使用控制器并加载它吗?像助手/模型一样加载它对我来说会更容易,因为有大量的控制器,我不想添加新文件 我还是C语言的新手。请指导我。您可以创建帮助器类,这些类将执行一些逻辑,您可以在控制器或视图中调用它们。我不知道这是不是你想要的。 例如,我创建了一个名为Repository(Repository pattern)的文件

我有很多控制器,比如,
用户
管理员
来宾
我在
管理员
控制器上有很多功能,我想在
用户
上使用。因为访问控制器意味着重定向它,我希望这种行为不会发生,所以问题是

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

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

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

 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;

    }
 }
公共类reposAccount
{
公共静态列表ShowMenuList(int RoleID)
{
myEntities db=新的myEntities();
List ListShowMenu=db.Sp_ShowMenuList(RoleID.ToList();
返回列表显示菜单;
}
}
在视图上,我称之为“助手”:

if(HttpContext.Current.User.Identity.IsAuthenticated)
{
//做一些准备活动,然后我给助手打电话:
foreach(reposAccount.ShowMenuList(RoleId)中的var obj.Where(z=>z.ParentMenu==null).OrderBy(z=>z.MenuOrder.ToList())
{
@:
  • @Html.ActionLink(obj.MenuName,“Index”,obj.Controler\u Name)
  • } }

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

    您可以使用

    $this->load->library()

    这是一个你可能想看的答案,你正在寻找的答案是第三个

    注意:


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

    理想情况下,您应该创建一个公共父控制器,其中包含其他控制器将继承的所有可重用代码。阅读
     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>
        }
    }