【问题标题】:PIP MVC - PHP ControllersPIP MVC - PHP 控制器
【发布时间】:2016-02-09 18:35:04
【问题描述】:

您好,我是 MVC 框架的新手。我决定在 MVC 中构建一个小型应用程序以获得更好的理解。

我搜索了一下,发现了 PIP 框架,我可以将其用于简单的应用程序,然后在我完全理解后进行修改。

PIP可以找到here

现在我有一个问题,通过寻找 PIP 框架,我是否需要为我将使用的每个页面设计新的控制器。

例如

applications/
      views/ 
        home.php
        about.php
        contact.php
      controllers/
         main.php
         aboutus.php ??
         contactus.php ??

例如。我的默认控制器和视图是 main.phphome.php,我有一个 main.php 控制器,如下所示:

<?php
     class Main extends Controller {

     function index()
     {
        $template = $this->loadView('home');
        $template->set('title', "Welcome Homepage");
        $template->render();
      } 
  }
?>

那么,这样,我是否需要为about和contact.php创建新的conrollers

【问题讨论】:

  • 是的,每个请求都需要一个控制器。但是,大多数 MVC 框架都有路由,您可以在其中选择默认控制器,或者可以让您选择“主”控制器来处理不同方法页面的特定路由。

标签: php model-view-controller


【解决方案1】:

PIP 的路由是内部化的,需要特定的控制器脚手架:

当你去:

example.com/main

它默认查找控制器main,然后查找函数index

如果您要每个视图有 1 个控制器,那么它会是这样的:

example.com/main
class Main extends Controller

example.com/about
class About extends Controller

example.com/contact
class Contact extends Controller

但是,如果您使用默认的 page 控制器,这将大大简化脚手架:

example.com/page/{about|contact|main}

class Page extends Controller {
    public function about (){

    }

    public function contact(){

    }

    public function main(){

    }
}

现在 1 个控制器将处理这些页面中的每一个的交付。

【讨论】:

  • 不能修改使用路由文件吗??
  • 并且通过您的方法,page 将始终在我的 URL 中可见,这并不好。
  • @Gags 虽然这绝对是真的,但您可以自己更改路由结构(我不知道 PIP 是如何工作的)并指向特定控制器中的特定操作。
  • Okii。但是,我怎样才能确保该页面即使在 routes.php 中也不会出现。如果我使用路由,我不知道页面是否在 url 中可见。
【解决方案2】:

使用 pip URL 定义了将要执行的控制器和函数。如果您希望联系人页面位于 mysite.com/contact,则需要添加联系人控制器。

您不需要为每个页面都创建一个新控制器。假设您有一个论坛。你可以有以下网址:

  • mysite.com/blog/write
  • mysite.com/blog/view/15

这些不同的 URL 都将在一个控制器中处理,blog.php

<?php

class Blog extends Controller {

    public function write()
    {
        echo 'Hello World!';
    }

    public function view($postId)
    {
       echo 'Viewing post: ' . $postId;
    }
}

【讨论】:

  • 不,但在这里您再次强调一个博客页面,该页面具有写入和查看功能。但我说的是多个页面
  • 让我们将页面作为单独的 URL 进行讨论。在我的示例中,您有 2 个页面,.com/blog/write/.com/blog/view/13。只要您不介意第一个路径与.com/blog/&lt;func&gt; 相同,您就可以重复使用控制器。如果你想要不同的路径,例如:.com/path1.com/path2,你需要不同的控制器。
  • 这在我设计网站博客时帮助了我。
【解决方案3】:

我还使用 PIP 作为入门框架,并对其进行了扩展以包含一些附加功能。我什至开始记录我的努力,但其他项目将我引向了其他方向。 很高兴分享我所拥有的,有关我的 PIP 工作的一些文档可以在 http://www.shed22.com/pip 找到。

如果您需要源代码副本和示例应用程序,请告诉我。

斯蒂芬

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-16
    • 2010-12-30
    • 2016-01-24
    • 2013-10-22
    • 2012-11-07
    • 1970-01-01
    • 2015-05-17
    • 2012-01-12
    相关资源
    最近更新 更多