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 宇视监控服务器无法登录
  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥15 DruidDataSource一直closing
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据