【问题标题】:Codeigniter: Deep level argumentsCodeigniter:深层参数
【发布时间】:2012-08-11 19:27:11
【问题描述】:

我认为,这可能是新手问题,但我是 CodeIgniter 的新手 :)

这就是问题所在,我正在尝试为商店创建类别和子类别(动态生成),主要问题是,我可以设法使用控制器中的 _remap 函数为主类别设置不同的选项。但是,如果我想更深入,那么同样的 _remap 函数也适用,我就卡在那里了。

例如,主类别uri是http://project.com/store/fruits/,但对于子类别,当然是-http://project.com/store/fruits/apples

我想将不同的视图应用到第 3 段,并且仍然能够使用 _remap 函数控制主要类别(水果)。

我想一遍又一遍地使用一个控制器,但我认为,为所有子类别(数百个,伪装)复制粘贴相同的功能内容一定很疯狂。

也许有一些方法可以做到这一点,但我不知道如何......在这里帮助! :)

/罗伯

【问题讨论】:

    标签: codeigniter navigation uri


    【解决方案1】:

    不确定为什么需要 _remap 函数。 如果“商店”是您的控制器,您可以将每个顶级类别设置为商店内的功能。传递给每个函数的(通过剩余的 URI)将是子类别,这些子类别可以被捕获并在数据库中查找以获取您需要的信息。像这样的:

    Function fruits(){
      $sub1 = $this->uri->segment(3); // this will be apples, etc...
      ...
      // if it's empty - call viewX
      // else call db lookup for $sub1 data here and pass to viewY 
    }
    

    或者...如果您使用 .htaccess,您可以像这样重新路由:

    RewriteCond %{REQUEST_FILENAME} store.*
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^store/([a-zA-Z]+)/([a-zA-Z]+)$ store/someFunction/cat=$1&subcat=$2 [L]
    

    这是为了说明目的 - 它需要修改以在您的环境中工作。

    【讨论】:

    • 另外 - 不确定“我想将不同的视图应用于第 3 段”是什么意思。您是说您将创建“数百个”视图 - 每个子类别一个?为什么?每个主要类别不需要一个视图吗?为什么“Apples”页面看起来与“oranges”页面不同?只是想知道您要做什么。
    • 你知道,store 是一个控制器,“fruits”是第一级类别(第二段),而我可以将“蔬菜”作为第一级类别(第二段)。但是如果我必须制作fruits()函数,然后vesicles()函数等等。主要类别的内容是相同的,不同的函数脚本将是不同的。我必须为子类别加载不同的视图和其他内容。
    • 嗯。如果您担心顶级类别(第 2 段)将是众多且重复的功能,那么为什么不使用 .htaccess 将所有“存储”调用重新路由到另一个处理所有情况的函数呢?这样,一个函数就可以读取类别和子类别并根据需要进行解析。
    • 但是我想把这个 /store/ 名字留在里面,这样会更有意义。它会这样工作吗?
    • 我已经编辑了答案以包含一个使用商店名称但重新路由到一个处理 cat 和 subcat 的函数的示例。
    【解决方案2】:

    感谢 jco 的努力,但实际上,我发现 _remap() 函数可以很好地满足我的需求。

    我创建了带有两个参数的公共 _remap() 函数 - $first_level 和 $next_levels,然后我控制了这些 $next_levels 给出的信息之后的所有内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-06
      • 1970-01-01
      • 1970-01-01
      • 2020-12-10
      • 2021-10-12
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多