gpt4 book ai didi

php - Codeigniter - if else 内部 View

转载 作者:行者123 更新时间:2023-12-02 08:49:33 24 4
gpt4 key购买 nike

我正在为我的网络应用设计主题布局。

假设我有两个 Controller ,A 和 B。我希望 A View 显示 div A,而 B View 将显示 div B。

我知道如何使用 if($this->router->fetch_class() == 'A') 在 Controller 内部设置它
{
//显示分区A
}

但是,如何实现这个观点呢?

最佳答案

不。不要那样做。 ;) 对这类事情的硬编码字符串几乎总是一种糟糕的方法。您的 View 会变得困惑,祝您在重命名 Controller 类时好运。

首先,如果这段代码在您的 Controller 中,您不知道它是哪个 Controller 吗?

这让我假设这是一个被多个 Controller 使用的继承方法,对吧?在这种情况下,有几个选项:

  1. 在每个 child 的基础上覆盖它,告诉 parent::some_action() 方法您要显示哪个 div。 (此处适当的“权限”授权将为您避免一些以后令人头疼的解耦问题……)

  2. 不要使用 fetch_class()请使用 instanceof(以便您的 IDE 为您完成繁重的工作,如果您永远重命名类(class))。

  3. 考虑将这些东西拆分成 subview (即部分 View )。在 View 中进行字符串比较变得真的很乱。相信。我。

以下是我的建议:

<?php
// Overridden core class
class MY_Controller extends CI_Controller {

public function some_action()
{
//...
if ($this instanceof Controller_class_that_uses_div_a)
{
$this->load->view('view_for_div_A');
}
else
{
$this->load->view('view_for_div_B');
}
//...
}
}

关于php - Codeigniter - if else 内部 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9520148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com