2012-03-20 5 views
-3

私はPHPでMVCについて学んでいます。しかし、私は問題に遭遇しました:私は特定の部門内の特定の場所に私の意見を表示したい。これどうやってするの?mvcビューでの特定のレイアウト

コントローラー:

class LogarController extends Controller { 

    private $view; 
    private $modelDAO; 

    function __construct() { 
     parent::__construct(); 
     $this->modelDAO = new LogarModel(); 
     $this->view = new LogarView(); 
    } 

    /** 
    * metodo Login(). 
    * funcao para logar o funcionario ja cadastrado ao banco de dados. 
    */ 
    public function Login() { 
     if ($this->modelDAO->Login($_POST['funcionario'], $_POST['senha'])) { 
      $idFuncionario = $this->modelDAO->rows['idFuncionario']; 
      $this->sessao = new Session(); 
      $this->sessao->set_value("logado",true); 
      $this->sessao->set_value("idFuncionario",$idFuncionario); 
      $this->redirect("view/funcionario/index.php"); 
     } else { 
      $this->view->show("Funcionario not found"); 
     } 
    } 
} 

ビュー:私が表示したい

​​

ボタンの下に "Funcionarioが見つかりません" これは私が今持っているものです。これどうやってするの?ページをリダイレクトする必要がありますか?

P .:私はフレームワークを使用していません。

+1

を書くときあなたは、単一の言語に固執する必要がありますか?ビュー自体を見る必要があるかもしれません。 –

+0

申し訳ありませんが、フレームワークを使用していません。私のビュークラスを投稿しました – user1258260

答えて

0

基本的に、ビュークラスは、HTMLプレゼンテーションを使用して、モデルとコントローラが作成した変数の昔ながらのエコー出力を処理します。他にもたくさんの方法がありますが、これは簡単な方法です。

class LogarView { 

     public function show($message){ 
      echo '<input type="button" value="Click Me"/><br/>'; 
      echo $message; 
     } 

} 

上記のHTMLボタンと "Funcionario not found"が出力されます。

+0

私はそれをやっていますが、ページは__getのためにリフレッシュしません。メッセージ($ this-> value) – user1258260

+0

出力は "view/template /"で行われます。 $ render。 ".php";テンプレート。これは、適切な場所に変数 "Funcionario not found"文字列を出力する方法を知っているように、編集が必要なファイルです。そのファイルの動作を知らなくても簡単な答えはありません。 – fred2

+0

このファイルは、フォームを持つPHPファイルであり、最終的には "funcionario not found"を表示する<?php echo $ this-> value?> – user1258260

1

あなたのコードにはいくつかの問題がありますが、最初に問題があります:慎重にお読みください PHPのテンプレート機能を利用する方法について説明します。

の横にある。 "Funcionario not found"メッセージを表示するかどうかは、スクリプトを実行する瞬間にわかります。そしてテンプレートをレンダリングする前に。ページをリダイレクトする必要はありません。

今、あなたは、元の問題が解決、混乱の残りの部分を持っていること:

  1. モデルは、データアクセスオブジェクトではありません。それは、多数のクラスから構成されるレイヤーです。件名にはrantの方が長くなります。下にスクロールして「いくつかのメモ」セクションに移動します。

  2. コンストラクターには複雑な計算を含めないでください。また、インスタンスで後で使用される他のオブジェクトのインスタンスを作成する必要もありません。構築中のオブジェクトとクラスの名前(あなたのケースでは、LogarModel' and LogarView`)との緊密な結合が作成されます。それはSRPに違反します。あまりにも長い場合、this pictureはそれを明確にします。

  3. phpでemtyコンストラクタを使用している場合は、(Viewクラスの)それを削除することができます。

  4. <script>タグはmissing attributesです。

  5. そしていただきましたコード= Pあなたはフレームワークを使用している

+0

ご協力いただきありがとうございます。私は多くを助けた。 – user1258260

関連する問題