dongtou2097 2018-04-11 14:08
浏览 59
已采纳

CodeIgniter同一控制器类上的多个子功能或方法?

I'm new to OOP.

I would like to have these different methods (page, menu, widget) under render functions. They are all in MY_Controller.php class. Can you show me an example how to implement this? Just like the built in $this->parser->parse(); I want to create something similar...

public function render('something')
{
    // page() related stuff;
    // menu() related stuff;
    // widget() related stuff;
}

$this->render->page('something');

$this->render->menu('something');

$this->render->widget('something');

Is this even possible? I know how to create $this->render_page(); or $this->render_widget(); and so on but I think the previous way is more feasible and good for the eyes, some more can group them together for easy maintenance. Do I need to do that way or just simply create different functions?

  • 写回答

1条回答 默认 最新

  • douhe1864 2018-04-11 16:04
    关注

    "do u think it’s better to use model?"

    Traditionally models mainly have to do with databases, however (the way I see it) is that you have either a library or a model to choose from (in CI) when you are going with an OOP approach.

    Libraries are more meant to be loosely coupled from your application and drag and drop from CI app to CI app.

    Sometimes a model that might be a good idea when you are dealing with logic that is tightly linked to your current application: like header/footers with specific variables that are unlikely to be useful for other purposes (e.g. other apps). For example, I have a model that is used for managing everything about a users profile picture from uploading to deleting - that controller methods can utilize while keeping things DRY - it was too short to be a library and too app-specific to be useful as one and I like my controllers to be input/output only so just validation and responses with the rest being handled by a model or library.

    So generally if I were you I'd move the functions into a library or model. I think you will find most templating systems for CI are library based. In any case you can't access $this->render->somemethod() unless the methods are in a library/model.


    Also what you want I think has been done quite a lot, a simple google search for "Codeigniter template library" and you get a slew of github libraries.

    Like this one: https://github.com/jenssegers/codeigniter-template-library (even has widgets).

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 VAE代码如何画混淆矩阵
  • ¥15 求遗传算法GAMS代码
  • ¥15 雄安新区高光谱数据集的下载网址打不开
  • ¥66 android运行时native和graphics内存详细信息获取
  • ¥100 求一个c#通过CH341读取数据的Demo,能够读取指定地址值的功能
  • ¥15 rk3566 Android11 USB摄像头 微信
  • ¥15 torch框架下的强化学习DQN训练奖励值浮动过低,希望指导如何调整
  • ¥35 西门子博图v16安装密钥提示CryptAcquireContext MS_DEF_PROV Error of containger opening
  • ¥15 mes系统扫码追溯功能
  • ¥40 selenium访问信用中国
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部