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>
}
}