与PHP模型控制器视图样式混淆

时间:2015-03-27 16:52:06

标签: php model-view-controller

让我的手弄湿整个MVC的东西,我真的迷失了。我有一个mysql表tblowner(owneridownername)。

现在我想要的是查看细节并进行编辑。

创建了MVC目录,并以index.php

开头 ?

的index.php视图=所有者安培;行动=视图

require('controllers/controller.php');
$controller=new controller();

控制器/ Controller.php这样

class controller {

    function controller(){
        //Check action and view.
        $view="home";
        $allowedViews=array("home","owner");
        if(isset($_GET['view'])){
            $view=strtolower($_GET['view']);
            if (!in_array($_GET['view'],$allowedViews)){
                $view="home";
            }
        }
        //requested action?
        $action="view";
        if(isset($_GET['action'])){
            $action=strtolower($action);
        }


        //require model based on view now.
        $controllerClass=$view.'controller';
        require('controllers/'.$controllerClass.".php");
        $controller=new $controllerClass($action);
    }
}

模型/ ownermodel.php

class ownermodel
{

    //contains two methods: edit and view related. Thats all.

    //**********************************************************************

    function ownermodeledit()
    {
        //edits owner data. It is always update since program cames prefilled with data.
        if (isset($_POST['btnedit']))
        {
            //save changes.
        }

        else
        {//show form now.
            $this->showEditForm();
        }
    }

    //**********************************************************************
    function showEditForm($msg = '')
    {
        if ($msg)
        {
            echo '<p class="error">' . $msg . '</p>';

        }
        $ownerInfo = $this->ownermodelview();
        if (is_array($ownerInfo))
        {
            ?>
            <form action="index.php?action=edit&view=owner" method="POST" id="frmeditowner" name="frmeditowner">
            Name: <input type="text" id="oname" name="oname" value="<?php echo $ownerInfo['ownername']; ?>"/>
        <?php
        }//if(is_array($ownerInfo)) {
        else
        {
            echo '<p class="error">There was an error retrieving owner information</p>';
        }
    }

    //**********************************************************************

    function ownermodelview()
    {
        //views model. return an array here

        $mydb = new dbACW();
        $params = array();
        $return = "";
        $result = $mydb->runSelectQuery("SELECT * FROM tbllicencee LIMIT 1", $params);
        if (is_array($result) && count($result) > 0)
        {
            $return = array();
            foreach ($result as $info)
            {
                $return['ownerid'] = $info['id'];
                $return['ownername'] = $info['ownername'];
            }
        }

        return $return;
    }
}

ownercontroller.php提供必要的操作(即编辑)。而模型就是迷失的地方。

对于查看所有者信息,模型中的方法将返回包含信息的数组,并且查看器中的方法无论如何都会显示该数组。

但是对于编辑这样的行为,视图的作用是什么?编辑信息的表单在哪里?

视图......目前它是OOP的通知(带有类的东西)。但是,如果视图应该使网络作者的工作更容易围绕设计?如果里面有一堆PHP代码,那么它与模型的区别是什么?

很抱歉很长的帖子......

1 个答案:

答案 0 :(得分:0)

在MVC结构中,有三个主要术语 - Model,View&amp;控制器,有时会让人感到困惑。

Model中,我们基本上为db交互定义了类。比方说,如果我正在尝试创建学校管理系统,那么我将创建一个类student_model,其中我定义了将写入db或从db读取的函数等。同样,{{1} },readStudentDetails()

insertNewStudent()中,我们只是向用户显示内容。所以,基本上我们不会在这里做很多任务,而只是回显HTML中的输出。例如,我们有View名为View。它只包含html和一些数据回显。这就是全部。 home.php中没有进行重大处理或计算以及其他操作。它仅用于将数据输出给用户。

Views基本上是ControllerModel之间的中间人。因此,它在View类中接受HTTP请求,调用模型类进行数据库交互并访问视图以显示输出等。

如果您正在寻找一个简单的现有框架来学习这一点,请尝试CodeIgniter:https://ellislab.com/codeigniter/user-guide/overview/mvc.html

按照文档操作非常简单,使用起来也很简单。但还有其他框架,如Zend Frameworks等。但对于初学者,在我看来,CodeIgniter是最好的!

希望这有帮助。