2017-05-20 26 views
4

私は以下のコードを持っています。値を投稿するたびに配列に追加されません。それは、私が掲示した値だけを持つ新しい配列を作成するようなものです。PHP MVC投稿に投稿する

<?php 

class Model 
{ 
    public $task; 

    public function __construct() 
    { 
     $this->task = array(); 
    } 
} 

class Controller 
{ 
    public $model; 

    public function __construct(Model $model) 
    { 
     $this->model = $model; 
    } 

    public function addTask($taskToAdd) 
    { 
     array_push($this->model->task, $taskToAdd); 
    } 
} 

class View 
{ 
    public $model; 
    public $controller; 

    public function __construct(Controller $controller, Model $model) 
    { 
     $this->controller = $controller; 
     $this->model = $model; 
    } 

    public function drawScreen() 
    { 
     $htmlForm = "<!doctype HTML>"; 
     $htmlForm = $htmlForm . "<html><head><title>php form test</title></head>"; 
     $htmlForm = $htmlForm . "<body>"; 
     $htmlForm = $htmlForm . "<form method='POST' action='index.php'>"; 
     $htmlForm = $htmlForm . "<input type='text' name='newtask' />"; 
     $htmlForm = $htmlForm . "<input type='submit' value='Add new task' />"; 
     $htmlForm = $htmlForm . "</form></body></html>"; 

     echo $htmlForm; 
    } 

    public function listTasks() 
    { 
     print_r($this->model->task); 
    } 
} 

    $model = new Model(); 

    $controller = new Controller($model); 

    $view = new View($controller, $model); 

if (isset($_POST['newtask'])) { 
    $taskToAdd = $_POST['newtask']; 
    $controller->addTask($taskToAdd); 
} 

echo $view->drawScreen(); 
echo $view->listTasks(); 

私がここで間違っているのは本当にわかりません。 array_pushは正しい方法ではありませんか?私はそれが何か違いがあればxamppを使用しています。私が間違っていることは何ですか?

+1

モデルをデータベースに保存し、毎回そこからロードする必要があります。あなたのPHPコードは何度も何度もスクリプトをコンパイルして、毎回あなたのモデルを破壊するからです。コンピュータのように考えてみてください。もしあなたがこれらの指示を受けたらどうしますか? – Black

答えて

2

あなたがユーザーがフォームを送信するたびに、あなたのPHPスクリプトの新しい実行であることを理解する必要があります。 あなたの配列は前回と同じ配列ではありません。

希望することを行うには、たとえばSessionを使用します。

+0

私はそれを得ました。 NETの州のようなものです – Unseen

+0

あなたのコードのあなたの目的は何か分かりませんが、あなたはまた、JavaScriptで配列の配列を構築することができますし、いくつかの時点で処理するすべての配列をPHPに送信します。 –