2011-01-16 5 views
0

AJAX/Inline編集用のコードを再利用できるように、Webアプリケーションを構造化/設計する方法を教えてください。私はMVC(Zend Framework)を使用しています。私はAJAXダイアログ AJAX/Inline編集用の再利用性を最大限にするWebアプリケーションの構造化/設計方法

  • で使用するためしかしため、そのアクションのための部分的なビューを提供する(<html><head> &ものを含む「ページテンプレート」)をレイアウトを無効にすることができます - すでに

    • ビュー/レイアウト再利用を促進する部分がありますインラインでの編集、私は小さな部分を処理する必要があります。テキストボックスだけです。さらに、リクエストを処理する特別なアクションが必要です(例:updateUser()の代わりにupdateName())。

    再利用性を最大限にするために私のアプリを設計する方法は何ですか?

  • +0

    xml/jsonの部分的なHTMLコンテンツの特殊なビュー(およびアクション)を取得するために、contextSwitchに関するZFドキュメントを確認してください。 – regilero

    答えて

    3

    contextSwitcherを使用する必要があります。簡単な例

    // In side your controller class 
    public function init() 
    { 
        // Obtain the contextSwitcher 
        $ajaxContext = $this->_helper->getHelper('AjaxContext'); 
    
        // Add two new contexts, remove which will be JSON and view which will be HTML 
        $ajaxContext->addActionContext('remove', 'json') 
        ->addActionContext('view', 'html'); 
    
        // Init the context 
        $ajaxContext->initContext();  
    } 
    

    あなたは、2つのアクションremoveview

    removeを定義する必要があなたのJavascriptを解析し、使用することができますJSONエンコードされたアレイ内のすべてのビュー変数を返すために起こっている、あなたはそれゆえ行いますビュースクリプトは必要ありません。 JSONやHTMLのようなコンテキストを使用するアクションは自動的にそのレイアウトを無効にします。

    public function removeAction() 
    { 
        // Do some operations here for removing data, and I'll assume you assign the outcome to $success 
    
        if($success) 
          $this->view->message = "Success"; 
        else 
          $this->view->message = "There was a problem removing your data"; 
    } 
    

    あなたは/index/remove/format/jsonのようなURLを使用してremoveアクションにアクセスする - フォーマットJSONなしで要求が失敗します。

    あなたのHTMLアクションviewを使用すると、URLにビューアクションにアクセスし、ここで

    public function viewAction() 
    { 
        // Load something from the database and assign to $data 
        $this->view->name = $data['name'] 
    } 
    

    あなたのビュースクリプトが、これはviewアクションのあなたの出力が含まれていますview.ajax.phtml呼ばれるアクションがあり、ビュースクリプトが必要になりますindex/view/format/htmlのようになります。

    ビュースクリプトは、私が何かを見逃しているかもしれとしてdocs on the contextSwitcherを読むことを忘れないでください、この

    <h1>Hello <?=$this-escape($this->name)?></h1> 
    <p>Welcome to my site. This was obtained via an AJAX request.</p> 
    

    のように見えることがあります。

    私は役立つことを願っています。

    関連する問題