PHP MVC如何从视图回到原始控制器

时间:2015-08-13 21:09:51

标签: php model-view-controller

我正在尝试构建我的第一个PHP MVC应用程序,但是从视图回到控制器时遇到了问题。

我的问题是在视图中,当我需要输入数据并返回调用视图的原始控制器时,但使用不同的操作(以验证数据输入)。

我的观点中有这个代码:

        <form method="post" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>">
        <label>Username:</label> 
        <input type="text" name="username" value="<?php echo $username;?>"> <br> <br> <label>Password:</label>
        <input type="password" name="password"> 
        <input type="submit" name="submit" value="Submit"> 

从我的控制器调用该视图:

class HomeController {

        public function index () 
        {
            $parameters = (func_num_args() >= 1) ? func_get_arg(0) : array();

            require_once(ROOTPATH . '/controller/class.Render.php');

            $variables = array(
                    'username' => '',
                    'password' => '',
                    'errorMsg' => ''
            );      

            $layout = new Render("Home", "login", $variables);
        }
    }

我的渲染:

class Render 
{
    private $controller;

    private $view;

    public function __construct ($controller, $view, $variables = array()) 
    {
        $this->controller = strtolower($controller); 
        $this->view = strtolower($view); 

        $filename = ROOTPATH . '/view/' . $this->controller . '/' . $this->view . '.php';
        if (!file_exists($filename))
        {
            $errorMsg = "ERROR: View not found on Layout construct: " . $filename;
            throw new Exception($errorMsg);
        }

        if (count($variables) > 0) {
            foreach ($variables as $key => $value) {
                if (strlen($key) > 0) {
                    ${$key} = $value;
                }
            }
        }

        echo "<body>";
        echo "<div class='container'>";
        echo "<div id='dialogDiv'></div>";

        require_once(ROOTPATH . '/view/header.php');
        require_once ($filename);
        require_once(ROOTPATH . '/view/footer.php');

        echo "</div>";
        echo "</body>";
    } 
}

我的问题是,当我点击表单中的submit时,它会调用index控制器 - $_SERVER['PHP_SELF']显示index页面,而不是home/index } page。

如果我将form action更改为action='home/index',则会向我显示index/home/index页面不存在的错误...

如何将我的提交回原始控制器以处理数据输入?

感谢您的帮助。

0 个答案:

没有答案