我正在尝试在PHP中了解有关MVC的更多信息。但我遇到了一个问题:我想在特定div中的特定位置显示我的视图。我怎样才能做到这一点?这就是我现在所拥有的:
控制器:
class LogarController extends Controller {
private $view;
private $modelDAO;
function __construct() {
parent::__construct();
$this->modelDAO = new LogarModel();
$this->view = new LogarView();
}
/**
* metodo Login().
* funcao para logar o funcionario ja cadastrado ao banco de dados.
*/
public function Login() {
if ($this->modelDAO->Login($_POST['funcionario'], $_POST['senha'])) {
$idFuncionario = $this->modelDAO->rows['idFuncionario'];
$this->sessao = new Session();
$this->sessao->set_value("logado",true);
$this->sessao->set_value("idFuncionario",$idFuncionario);
$this->redirect("view/funcionario/index.php");
} else {
$this->view->show("Funcionario not found");
}
}
}
查看:
class view {
function __construct(){}
function __set($var,$value){
$this->var = $value;
}
function __get($var){
return $this->var;
}
function render($render){
require "view/template/" . $render . ".php";
}
function show($value){
$this->value = $value;
}
function alertar($value){
echo "<script>alert('{$value}')</script>";
}
}
我想在按钮下显示“Funcionario not found”。我怎样才能做到这一点?我需要重定向页面吗?
P.S。:我没有使用任何框架。
答案 0 :(得分:1)
您的代码有几个问题,但首先 - 您的问题:仔细阅读 this article 。它将解释如何利用PHP的模板功能。
旁边。是否显示未找到的&#34; Funcionario&#34;消息,您将在运行脚本时知道。在渲染模板之前。无需重定向页面。
既然你原来的问题有一个解决方案,其余的混乱:
模型不是数据访问对象。它是一个由多个类组成的层。这是一个更长的rant主题。向下滚动到&#34;一些注释&#34;部分。
构造函数不应包含任何复杂的计算。也不应该创建稍后将在实例中使用的其他对象的实例。它在您构造的对象和类的名称之间创建紧密耦合(在您的情况下,LogarModel' and
LogarView`)。它违反了SRP ..如果阅读时间过长,this picture会更加清晰。
如果您在php中有一个emty构造函数,那么您可以将其删除(在View
类中)。
您的<script>
代码为missing attributes。
当你编写代码= P
答案 1 :(得分:0)
基本上,您的视图类通过HTML模型和控制器创建的变量的旧式回显来处理输出。还有很多其他方法可以做到,但这只是一种简单的方法。
class LogarView {
public function show($message){
echo '<input type="button" value="Click Me"/><br/>';
echo $message;
}
}
上面会输出一个HTML按钮,并且没有找到&#34; Funcionario&#34;下方。