PHP视图与控制器相关
我想实现像MVC一样连接到任何特定视图的控制器。我不使用PHP中提供的任何框架 所以,我需要一些指导和建议 我有一些控制器和视图。对于我的视图,我只想输出我的数据。 我现在关心的是控制器中的函数(如PHP视图与控制器相关,php,templates,yii,yii-routing,Php,Templates,Yii,Yii Routing,我想实现像MVC一样连接到任何特定视图的控制器。我不使用PHP中提供的任何框架 所以,我需要一些指导和建议 我有一些控制器和视图。对于我的视图,我只想输出我的数据。 我现在关心的是控制器中的函数(如create())如何获得用户在我的views/create.php中输入数据的所有$\u POST['params'],并在create()控制器函数中创建新模型 所以,现在,我想这样做,我将在我的controllers文件夹中创建MyViews类。其目的是加载特定视图并将所有$\u POST参数加
create()
)如何获得用户在我的views/create.php
中输入数据的所有$\u POST['params']
,并在create()
控制器函数中创建新模型
所以,现在,我想这样做,我将在我的controllers文件夹中创建MyViews类。其目的是加载特定视图并将所有$\u POST
参数加载到对象中。然后,每个控制器(如Users\u controllers)将创建myview。在用户\u控制器的函数中,如创建()
,销毁()
,我可以使用MyView中的函数加载特定视图以加载对象
我找到了一个加载视图的源代码
<?php
class MyView {
protected $template_dir = 'templates/';
protected $vars = array();
public function __construct($template_dir = null) {
if ($template_dir !== null) {
// Check here whether this directory really exists
$this->template_dir = $template_dir;
}
}
public function render($template_file) {
if (file_exists($this->template_dir.$template_file)) {
include $this->template_dir.$template_file;
} else {
throw new Exception('no template file ' . $template_file . ' present in directory ' . $this->template_dir);
}
}
public function __set($name, $value) {
$this->vars[$name] = $value;
}
public function __get($name) {
return $this->vars[$name];
}
} ?>
这就是我观察到的Yii框架。加载特定视图后,如何检测参数是$\u POST
还是$\u GET
有没有关于归档我的任务的指导和建议
没有问题你有一个主要问题:你表达意思的能力非常有限。你问的问题实际上与你的问题无关 根据我收集的信息,您需要检测用户发出的
POST
或GET
请求。直接检测它你可以检查$\u服务器['REQUEST\u METHOD']
,但是用控制器检查它可能会很麻烦。您将得到许多控制器的方法,这些方法根据请求方法的不同而表现不同
由于您没有使用任何流行的框架,因此建议您将此决策委托给路由机制
在我看来,处理这个问题的一个很好的方法是在控制器的方法名前面加上请求方法:postLogin()
,getArticles()
等等。您可以找到一些其他示例。如果有一个POST
请求,它将在$\u POST
数组中包含一些内容
所谓的“视图”实际上是模板。如果您阅读,您会注意到,那里的代码实际上是您的MyView
的改进版本。视图不是模板。视图是包含表示逻辑和操作多个模板的实例
p.S.如果您正在探索与PHP相关的MVC和MVC启发模式,您可能会发现它们很有用。尝试If(count($\u POST)>0){
。
if(isset($_POST['Post']))
{
$model->attributes=$_POST['Post'];
if($model->save())
$this->redirect(array('view','id'=>$model->id));
}