0

我想实现像 MVC 那样连接到任何特定视图的控制器。我没有使用 PHP 中提供的任何框架。

所以,我需要一些指导和建议。

我有一些控制器和视图。对于我的观点,我只想输出我的数据。我现在关心的是我create()在控制器中的函数(如)如何获取$_POST['params']用户在我的函数中输入的所有数据,并在控制器的函数views/create.php中创建一个新模型。create()

所以,现在,我正在考虑这样做,我将在我的控制器文件夹中创建MyViews类。目的是加载特定视图并将所有$_POST参数放入对象中。然后,像Users_controllers这样的每个控制器都会创建MyViews。在Users_controllers的函数中,比如create(), destroy(),我可能会使用MyViews中的函数来加载特定的视图来加载对象。

我找到了一个加载视图的源

<?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];
}
} ?>

嗯,我不知道如何检测 _POST 参数

    if(isset($_POST['Post']))
    {
        $model->attributes=$_POST['Post'];
        if($model->save())
            $this->redirect(array('view','id'=>$model->id));
    }

这是我观察到的 Yii 框架。我如何检测参数是加载特定视图$_POST还是$_GET加载特定视图之后。

对归档我的任务有任何指导和建议吗?

4

1 回答 1

1

不相关的问题
你有一个主要问题:你表达什么意思的能力非常有限。您提出的问题实际上与您的问题无关。

根据我收集的信息,您需要检测用户提出的请求POSTGET请求。直接检测你可以检查$_SERVER['REQUEST_METHOD'],但是用控制器检查它可能会很麻烦。您最终会得到很多控制器的方法,这些方法的行为会根据请求方法而有所不同。

由于您没有使用任何流行的框架,因此建议您将此决定委托给路由机制。

在我看来,处理这个问题的一个很好的方法是在控制器的方法名称前加上 request method:postLogin()getArticles()。你可以在这里找到一些额外的例子。如果有POST请求,它将数组中包含一些$_POST内容。

所谓的“视图”实际上是模板。如果您阅读这篇文章,您会注意到,那里的代码实际上是您的MyView. 视图不是模板。视图是包含表示逻辑和操作多个模板的实例。

PS如果您正在探索与 PHP 相关的 MVC 和受 MVC 启发的模式,您可能会发现这篇文章很有用。

于 2012-08-19T09:11:49.463 回答