2016-08-15 10 views
0

私はMVCとTwigでPHPプロジェクトを構築していますが、アクション 'input'のフォーム検証後に1つの変数文字列を返す問題があります。アクションinsert(私が欲しいときだけに使用されているinsert.phpファイルをMVCのtwig - 実行ファイルの後に変数を取得する方法

// '/class/index.php' file with class called 'Index' 

class Index { 
    private $lang; 
    private $db; 

    public function __construct($db, $lang) { 
     $this->lang = $lang; 
     $this->db = $db; 
    } 

    public function generate() { 

     // new Core object 
     $core = new BlogCore($this->db); 

     /* 
     ** pagination 
     */ 
     $numRows = $core->getNumRows(); 
     $pagination = new Pagination($_GET['p']); 
     $pagination->setNumRows($numRows); 
     $pagination->setLimit(3); // set 3 posts on one page 
     $limit = $pagination->sqlPagination(); 
     $offset = $pagination->sqlPaginationOffset($limit); 

     /* 
     ** select detalis form database 
     */ 
     $posts = $core->select($limit, $offset); 

     return [ 
       "posts"   => $posts, 
       "pagination" => $pagination, 
       "lang"   => $this->lang 
       ]; 
    } 

    public function getTemplate() { 
     return "default.tpl"; 
    } 
} 

そしてここにある:

ここ

はインデックスページを表示している私のindex.phpファイルです: はここに私のコントローラファイルであります私のdbにフォームから新しいデータを入力します)。ここでは、フィールドに入力されたデータが正規表現であるかどうかを確認しています。もしそうでなければ、ここで私はあなたの変数をテンプレートに戻して、ユーザーへの通知を表示したいと思っています。

// '/class/insert.php' file with 'Insert' class 

class Insert { 
    private $lang; 
    private $db; 
    private $postText; 
    private $fileName; 
    private $myFile; 
    private $phoneValidate; 
    private $urlValidate; 

    public function __construct($db, $lang) { 
     $this->lang = $lang; 
     $this->db = $db; 
    } 

    public function generate() { 

     $postText = $_POST["postText"]; 
     $myFile  = $_FILES["myFile"]; 
     $fileName = $myFile["name"]; 
     $phoneNum = $_POST['phoneNumber']; 
     $url  = $_POST['url']; 

     $validate = new Validation; 

     $phoneValidate = "test"; 
     // phoneValidate for form validation 
     if (!$validate->phoneNum(isset($phoneNum))) { 
      $phoneValidate = "error"; 
     } else { 
      $phoneValidate = "ok"; 
     } 

     // new Core object 
     $core = new BlogCore($this->db); 

     // do insert in SQL 
     if (!empty($postText)) { 
      $core->insert($postText, $fileName); 
      $core->saveFile($myFile); 
     } 

     header("Location: /codeme/06_blog_v5_mvc/index.php"); 
    } 

    public function getTemplate() { 
     return null; 
    } 
} 

そこで質問です:あなたが必要な場合はどのように私は私がheader()機能を実際にこれをやっているように(私のインデックスファイルを取得するには、このファイルを変更し、$phoneValidateという変数 の付加価値を得ることができ、このプロジェクト?だから、

https://bitbucket.org/Pirum/simple-blog/src

答えて

0

さて、それを得るためにどのように可能な方法の一つは、header()機能で「GET」paramsはとURLを準備され、変更されたクラス:。私のBitbucketアカウントに共有されていますは、(私が添付しました問題だけライン)以下のようなものです:

$validate = new Validation; 

// phoneValidate for form validation 
if (!$validate->phoneNum($phoneNum)) { 
    $headerUrlParam .= $validate->returnUrlParam($headerUrlParam) . "validatePhoneNum=error"; 
} 

// url forf validation 
if (!$validate->url($url)) { 
    $headerUrlParam .= $validate->returnUrlParam($headerUrlParam) . "validateUrl=error"; 
} 

header("Location: /codeme/06_blog_v5_mvc/index.php" . $headerUrlParam); 
} 

方法returnUrlParam()$validate内のオブジェクトがちょうど右の看板を準備するために使用されるか、または「&」URLがindex.phpたちに終了したときにためています「?」 '?'記号を使用する必要があります。既に 'GET'値がある場合は、 '&'記号を使用する必要があります。

phoneNumフィールドが正しく入力され、urlフィールドが正しく入力されない場合、この1つの値が誤ってURLに返されます。

サンプル#1:URLが間違っているとPHONENUMが正しい: index.php?validateUrl=error サンプル#2:URLおよびPHONENUMが間違っている:index.php?validatePhoneNum=error&validateUrl=error

関連する問題