【问题标题】:CodeIgniter view loading not loading in order?CodeIgniter 视图加载未按顺序加载?
【发布时间】:2013-07-02 08:55:37
【问题描述】:

我在 CodeIgniter 中有一个控制器,代码如下:

$this->load->view("first");
echo "LOL";
$this->load->view("second");

但奇怪的是,当页面被渲染时,HTML是:

LOL
<div id="firstView"></div>
<div id="secondView"></div>

我不知道是什么导致了这种对语句的重新排序。有什么建议?我可能忽略了什么?

【问题讨论】:

    标签: php codeigniter templates


    【解决方案1】:

    最后在代码点火器中渲染视图。 如果你想在你去的时候渲染它们,你可以这样做

    echo $this->load->view("first", array(), true);
    echo "LOL";
    echo $this->load->view("second", array(), true);
    

    【讨论】:

      【解决方案2】:

      很简单:

      $this->load->view("...");
      

      不会立即显示视图。这会在以后发生,MVC 框架的好处之一是什么。

      【讨论】:

      • 我通常使用echo语句来查看页面执行的流程。我想当你不控制渲染不同元素的时间时,我的策略不起作用。我将不得不创建一个新视图,只包含测试文本,然后加载它以检查执行顺序。
      • 使用日志文件、日志框架或其他任何东西!我希望 CI 有这样的东西
      • 您可以使用 phpchrome 之类的工具将变量等输出到开发者控制台。
      • 我建议您只加载一个视图,然后在其中加载其他视图。在一个控制器中加载多个视图通常是不合逻辑的。
      • @RobinCastlin 你能解释一下你的推理吗?如果我们只包含一个视图,我们会添加一个额外的抽象层,它不会增加任何优势,但会添加大量复制粘贴的代码。
      【解决方案3】:

      要实现你正在尝试的,你必须将第三个参数传递给函数 $this->load->view(...),表明你将在变量中接收视图,而不是显示马上。

      像这样:

      echo $this->load->view("first", NULL, TRUE);
      echo "LOL";
      echo $this->load->view("second", NULL, TRUE);
      

      查看第三个参数 TRUE(第二个是您要传递给它的所有变量)。 不要忘记使用 echo 打印视图的结果。如果您想存储视图并处理它们,或者按照您希望的顺序打印它们,这将非常有用。

      【讨论】:

      • @Robin Castlin,你比我快:P
      • 是的,但你用的是大写TRUE,我发现它更漂亮:)
      • 这是我的指纹之一 ;)
      • 我的也是:P 变得更好。请注意,我对接受的答案所做的唯一事情是将echo 添加到第一行和第三行。
      • 是的,但是您的速度更快,并且您的回答被接受了。我浪费了时间格式化代码
      【解决方案4】:

      这是一种更优雅的方法:

      $this->load->view("first");
      $this->output->append_output("LOL");
      $this->load->view("second");
      

      使用这将减少将预先编写的 $this->load->view 语句重写为回声。希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 2013-01-10
        • 2012-04-19
        • 2011-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-18
        • 1970-01-01
        相关资源
        最近更新 更多