PHP-如何从视图访问控制器中的数组?

mwngjboj  于 2023-03-07  发布在  PHP
关注(0)|答案(1)|浏览(143)

我正在做一个基本的网站,我在视图中从控制器访问数组时遇到了问题。我希望能够访问$TPL ["results"]数组。目前,当我加载控制器(主页)时,它显示"foreach循环的参数无效。当我从视图中var_dump数组时,它是空的,但如果我从控制器中执行此操作,它将显示内容。
控制器:

<?php 
  include "app.config.php";
  include "app.model.php";
  include "app.view.php";

  $TPL["results"] = readAllEntries($conn);
?>

查看:

<?php
$encoded = addslashes(json_encode($TPL["results"]));
?>
<table>
   <tr>
   <th></th>
   <th>ID <a onclick='sorted("ascending", "<?php echo $encoded; ?>", 0);'><img src="images/uparrow.png"/></a> <a onclick='sorted("descending", "<?php echo $encoded; ?>", 0);'><img src="images/downarrow.png"/></a></th>
   <th>Last Name <a onclick='sorted("ascending", "<?php echo $encoded; ?>", 2);'><img src="images/uparrow.png"/></a> <a onclick='sorted("descending", "<?php echo $encoded; ?>", 2);'><img src="images/downarrow.png"/></a></th>
   <th>First Name <a onclick='sorted("ascending", "<?php echo $encoded; ?>", 1);'><img src="images/uparrow.png"/></a> <a onclick='sorted("descending", "<?php echo $encoded; ?>", 1);'><img src="images/downarrow.png"/></a></th>
   <th>Email <a onclick='sorted("ascending", "<?php echo $encoded; ?>", 4);'><img src="images/uparrow.png"/></a> <a onclick='sorted("descending", "<?php echo $encoded; ?>", 4);'><img src="images/downarrow.png"/></a></th>
   <th>Phone <a onclick='sorted("ascending", "<?php echo $encoded; ?>", 3);'><img src="images/uparrow.png"/></a> <a onclick='sorted("descending", "<?php echo $encoded; ?>", 3);'><img src="images/downarrow.png"/></a></th>
   </tr>
 <?php
 $rowNum = 0;
    foreach($TPL["results"] as $entry) 
    {   
    ?>
       <tr id="Row_<?php echo $rowNum;?>">
            <td>DE</td>
            <td><?php echo $entry['id']?></td>
            <td><?php echo $entry['lname']?></td>
            <td><?php echo $entry['fname']?></td>
            <td><?php echo $entry['email']?></td>
            <td><?php echo $entry['phone']?></td>
            <?php  $rowNum++; ?>
         </tr>
    <?php
    }
    ?>

如果我从控制器中删除"include app.view.php"并将"include app.ctrl.php"添加到视图中,数据会加载,但之后我无法通过控制器访问添加到数据库等操作。我尝试使用$_ session,但它也给出了一个空数组。

ax6ht2ek

ax6ht2ek1#

https://www.php.net/manual/en/function.include.php
包含文件时,它所包含的代码将继承发生包含的行的变量作用域。从该点开始,调用文件中该行可用的任何变量都将在被调用文件中可用。但是,被包含文件中定义的所有函数和类都具有全局作用域。
所以我可以尝试在获取条目后放置视图吗?我还可以添加空合并操作符

<?php 
  include "app.config.php";
  include "app.model.php";

  $TPL["results"] = readAllEntries($conn) ?? [];

  include "app.view.php";
?>

相关问题