2

POST 値をコントローラーに送信してから PHP のモデルに渡そうとしていますが、これを行う方法がわかりません。

コントローラーのこの部分は、ユーザーが のようなビューを要求しているかどうかを確認するためのもの?action=gameです。これは機能します。

しかし、私はそれを変更して、それ$_POSTに送信してからモデルに送信できるようにしようとしています。

function __construct()
{
    if(isset($_GET['action']) && $_GET['action']!="" )
     {
         $url_view = str_replace("action/","",$_GET['action']);
         if(file_exists("views/" . $url_view . ".php" ))
         {
                $viewname = $url_view;
                $this->get_view($viewname . ".php");
          }
          else
          {
               $this->get_view('error.php');
          }
     } 
     else 
     {
         $this->get_view('home.php');
     }  
}

これが私が得たものです。登録フォームのページで、フォームのアクションはあるのです?process=registerが、うまくいきません。

if(isset($_POST['process']) == 'register)
{
    $this->get_view('register.php')
}

Get_view 関数は、どのモデルをビューにバインドするかを決定します

function get_view($view_name)
{
    $method_name = str_replace(".php","",$view_name);
    if(method_exists($this->model,$method_name))
    {
       $data = $this->model->$method_name();
    } else {
      $data = $this->model->no_model();
    }
      $this->load->view($view_name,$data);
}
4

1 に答える 1

4

あなたのフォームのアクションは であるため、?process=registerprocessまだ$_GETスーパーグローバルにあります。post を使用するためにできることは、プロセスを含む非表示の入力フィールドを追加することです。

これとともに:

<form method="post" action="script.php?process=register">

フォームは に POST されるscript.php?process=registerので$_GET['process']、 ではなく $_POST['process']があります。

代わりにこれを試してください:

<form method="post" action="script.php">
<input type="hidden" name="process" action="register" />

持っている$_POST['process']。または、「プロセス」を GET に保持し、if ステートメントを$_GETの代わりにcheck に切り替えることもできます$_POST

于 2012-05-24T22:59:52.803 に答える