让我的手弄湿整个MVC的东西,我真的迷失了。我有一个mysql表tblowner(ownerid
,ownername
)。
现在我想要的是查看细节并进行编辑。
创建了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代码,那么它与模型的区别是什么?
很抱歉很长的帖子......
答案 0 :(得分:0)
在MVC结构中,有三个主要术语 - Model,View&amp;控制器,有时会让人感到困惑。
在Model
中,我们基本上为db交互定义了类。比方说,如果我正在尝试创建学校管理系统,那么我将创建一个类student_model
,其中我定义了将写入db或从db读取的函数等。同样,{{1} },readStudentDetails()
等
在insertNewStudent()
中,我们只是向用户显示内容。所以,基本上我们不会在这里做很多任务,而只是回显HTML中的输出。例如,我们有View
名为View
。它只包含html和一些数据回显。这就是全部。 home.php
中没有进行重大处理或计算以及其他操作。它仅用于将数据输出给用户。
Views
基本上是Controller
和Model
之间的中间人。因此,它在View
类中接受HTTP请求,调用模型类进行数据库交互并访问视图以显示输出等。
如果您正在寻找一个简单的现有框架来学习这一点,请尝试CodeIgniter:https://ellislab.com/codeigniter/user-guide/overview/mvc.html
按照文档操作非常简单,使用起来也很简单。但还有其他框架,如Zend Frameworks等。但对于初学者,在我看来,CodeIgniter是最好的!
希望这有帮助。