codeigniter viewpage显示标记之前的输出

时间:2016-06-24 20:41:46

标签: php codeigniter

我在Codeigniter中有一个php应用程序。有3页的model.php,controller.php和view.php

model.php

<?php
    class Activity_insert extends CI_Model {
        public function  activity()
        {
            echo "it works";
        }
    }
    ?>

Controller.php这样

public function viewemp($q = NULL)
         {
            $this->load->helper('form');
            $this->load->library('form_validation');
                $this->load->model('activity_insert');
             $data['activity_log'] = $this->activity_insert->activity();
                $this->load->view('header');
                $this->load->view('sidebar');
                $this->load->view('success',$data);
                $this->load->view('footer');
         }

view.php

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>GATT</title>
  </head>
  <body class="hold-transition skin-blue sidebar-mini">
    <div class="wrapper">

    </div>
  </body>
  </html>

编译我的视图页面后,像这样

 it works <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>GATT</title>
      </head>
      <body class="hold-transition skin-blue sidebar-mini">
        <div class="wrapper">

        </div>
      </body>
      </html>

数据即将开始。如果我没有在view.php中的任何地方调用$ activity_log,它仍会在页面的开头显示相同的文本“it works”。请帮忙解决。

2 个答案:

答案 0 :(得分:1)

在模型制作中

echo "it works";

到这个

return "it works";
  

当您的功能符合并echo时,它会在浏览器遇到时将值打印出来。没有数据将通过功能返回。但如果您使用return,它将使用您的回调函数返回数据。因此,您可以在需要的地方使用该值。

What is the difference between PHP echo and PHP return in plain English?

答案 1 :(得分:0)

echo命令在被调用时打印文本。因此,您只应在需要向用户显示一些文本时调用它。这通常会在视图中发生。

现在,当您想要将某些文本返回到某个函数并在以后使用它时,您应该使用return而不是echo并将其存储在某个变量中供以后使用。在您的情况下,您应该在模型中

public function  activity()
{
    return "it works";
}

因此,当您调用$data['activity_log'] = $this->activity_insert->activity()时,活动函数返回的数据将被分配给$data['activity_log']变量。如果你没有返回任何东西,但是你现在就做了回音,那么在加载视图之前会打印字符串(这就是为什么它出现在html的开头),因为函数没有返回任何事情,$data['activity_log']变量都是空的。