dongtou2097 2018-04-11 22: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-12 00: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 让node服务器有自动加载文件的功能
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误