$ _GET变量在MVC设计的代码中的搜索函数中使用时不返回值

时间:2018-02-14 08:59:58

标签: php

这个问题与this one类似,但有点不同。我想在我的代码中创建一个搜索功能。但是,当我使用$ _GET变量时,我无法回显输入的搜索值。

以下是3个文件中分隔的代码(我使用的是自定义MVC设计,而不是任何特定的框架)

搜索表单

<form action = "maina2/getStaffname" method = "get">
        <select name = "choice">
            <option value = "staffname" name = "staffname">title</option>
            <option value = "id" name = "id"> author</option>

        </select>
            <input name= "search" type ="text"  size="65" maxlength = "88" style = "display:inline">
            <input name = "mysearch" type="submit"  style = "display:inline">
</form>

搜索控制器

<?php

    class Search extends Controller {
        public function __construct(){
        parent::__construct();
        }

        function Index() {
            $this->view->getStaffname = $this->model->getStaffname();
            $this->view->render('search/index');

        }

        function getStaffname() {
            $this->model->getStaffname();

        }
    }

这是搜索模型文件

<?php

class Search_Model extends Model{
    public function __construct() {
    parent::__construct();
        echo 'This is the SEARCH MODEL CLASS <br />';

    }

    public function getStaffname(){
        if(isset($_GET['search'])) {
                echo $_GET['search'];

        }
    }
}

令我感到震惊的是,当我将方法更改为POST时,我能够回显搜索值。我的技术可能有什么问题?

1 个答案:

答案 0 :(得分:1)

  

重写符如下RewriteRule ^(.+)$ index.php?url=$1

您将使用一个url参数替换所有查询参数;如果以前在网址中有任何?search=...,那么之后就不会有。{您希望使用QSA保留现有参数:

RewriteRule ^(.+)$ index.php?url=$1 [QSA]
  

为什么当我在窗体中将方法更改为“POST”并在控制器中使用$_POST['search']时我能够回显?

因为请求正文(“POST参数”)不受重写规则的影响。