我正在尝试构建我的第一个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
页面不存在的错误...
如何将我的提交回原始控制器以处理数据输入?
感谢您的帮助。