【问题标题】:How view file get the variable from controller?视图文件如何从控制器获取变量?
【发布时间】:2020-09-10 08:39:43
【问题描述】:

我是一名学生,并且是 PHP 新手。经过大量搜索后,我仍然不明白视图文件如何从控制器获取变量。 我从 Controller.php 类中获得了函数 view()。

public function view($view, $data=[])
    {
        require_once "./mvc/views/".$view.".php";
    }

我得到了一个 HomeController.php 扩展了 Controller

function toTheView($x,$y){
        $model = $this->model("User");
        $sum = $model->Sum($x,$y);
        $this->view("calc", compact('sum'));
    }

这是我的 calc.php 查看文件。

<h3><?php echo $data["sum"]; ?></h3>

如您所见,calc.php 不需要来自 Controller.phpHomeController.php 的任何文件,但它是如何实现的仍然可以显示该变量吗?我的 IDE 在 calc.php 的那一行显示红色警报,但它仍在工作。

谢谢你帮助我。

【问题讨论】:

  • 那么到底是什么问题?
  • @jrswgtr 我的问题是 calc.php 视图文件如何具有控制器传入的变量而无需任何要求或包含:|它如何接收该变量?

标签: php model-view-controller


【解决方案1】:

您的require_once 包含该位置的文件内容,因此您的视图字段 可以访问同一范围内的任何变量,因此它可以使用来自public function view($view, $data=[]) 的传递变量,也可以访问$this .

最后你的代码是这样的:

public function view($view, $data=[])
    {
        // after executing: require_once "./mvc/views/".$view.".php";
       <h3><?php echo $data["sum"]; ?></h3>
    }

【讨论】:

    【解决方案2】:

    您可以使用以下方法将控制器中的所有变量传递给查看 get_defined_vars 作为数组 并使用extract将其转换为变量

    示例: HomeController.php

        function toTheView($x,$y){
                $model = $this->model("User");
                $sum = $model->Sum($x,$y);
                $this->view("calc", get_defined_vars());
            }
    

    来自 Controller.php 类的 view()

        public function view($view, $data=[])
            {
                extract($data);
                require_once "./mvc/views/".$view.".php";
            }
    

    calc.php

    <h3><?php echo $sum; ?></h3>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-23
      • 1970-01-01
      • 1970-01-01
      • 2014-08-17
      • 2018-01-06
      • 1970-01-01
      相关资源
      最近更新 更多