2014-09-25 23 views
-1

我碰到了一堵砖墙。我想要在网站的所有页面上使用查看文件header.php。在这个文件中,我想输出$total_items,它的值与我在控制器(Items)中使用的getTotalItems()方法中的$total_items相同。这与型号ItemsModel与查询SELECT count(item_id) as total_items FROM items;相关联。如何将变量传递给不具有相同url的控制器的视图?

我遇到的问题是,虽然localhost/somemvcproject/items/get_total_items输出$total_items没有任何问题,但我输入的任何其他URL都不会识别它或将其从ItemsModel中拉出。我明白这是建立我的URL路由,例如localhost/somemvcproject/controller/action/param1/param2/param3等等,并且我还没有创建一个名为header的控制器。但是,我怎样才能从ItemsgetTotalItems()访问$total_items(或对于这个问题任何其他变量)一个基本上不相关的视图。

接近周围工作的唯一方法是在每个控制器中加载ItemsModel,每次我希望包含header.php,否则$total_items是一个'未定义变量'。但对于网站的每一页,这似乎很荒谬。

我希望能够做的是一样的东西

` 
    <!--header.php--> 
    <html> 
     <head> 
      <title>My Items</title> 
     </head> 
     <body> 
      <div id="header">  
       <?php echo $total_items ?> 
      </div> 
     </body> 
    </html> 

`

如何访问$total_items

+0

您正在使用哪种框架? – 2014-09-25 14:14:41

+0

没有框架。只是一个实验性的螺母和螺栓mvc基于我的努力。 – user1128097 2014-09-25 14:22:15

回答

0

您可以在每个控制器中调用您的模型查询,无论您想要获取$total_items或 您可以使用自己的控制器类扩展当前的控制器类,并将您的方法放在控制器类中。

由于您尚未声明您的框架,因此很难向您展示编码示例。

+0

我要更新这个问题 – user1128097 2014-09-25 14:20:41

0

您可以请求调用控制器在加载页面时获取数据。 例如:

 // use document ready function to make call on document load 

     $(document).ready(function() 

     //create ajax call 

      }); 
+0

可怕的答案... – user1128097 2014-09-25 14:36:45

0

我认为你的工作是正确的。我唯一要添加的是你创建一个parent controller,由你计算$total_items的所有控制器继承,并将它传递给视图。你将不得不确保某种初始化函数被调用;这很可能是__construct()

喜欢的东西:

abstract class ControllerBase 
{ 
    function __contruct() 
    { 
     $total_items = getTotalItems(); 
     // Pass the $total_items to the views as you normally do 
    } 
} 

那么你的控制器应该继承的基类中的每一个:

class MyController extends ControllerBase 
{ 
    // Do the stuff 
} 

你需要记住,虽然,如果你实现你的子类__construct() ,你必须打电话给父母的:

class MyController extends ControllerBase 
{ 
    function __construct() 
    { 
     parent::__construct(); 
     // MyController's own stuff 
    } 
} 

这样,到时间yo ur action被调用,$total_items变量已经被计算并可用于视图。

+0

谢谢你的回复。很有帮助。 – user1128097 2014-09-25 15:16:11

+0

非常欢迎,我很高兴它为你工作。 – 2014-09-25 15:18:12

相关问题