2017-01-01 32 views
0

新年よろしくお願いします!phalcon phpを使用してコントローラからビューを表示

小さなファルコンプロジェクトをゼロから作成しようとしていますが、表示に問題があります。私はjsファイルからのajaxリクエストを使用してコントローラーアクションを呼び出すことができます。

$('#create_user').click(function() { 
    $.ajax({ 
     url: "/user/create", 
     dataType: "json", 
     success: function (resp) { 
      console.log('successfully getting create page: ' + resp); 
     }, 
     error: function (x, status, error) { 
      console.log(x.responseText); 
      console.log(error); 
     }, 
     complete: function() { 
     } 
    }); 
}); 

これはアクション内にブレークポイントを設定して確認しました。

<?php 

use Phalcon\Mvc\Controller; 

class UserController extends Controller 
{ 
    public function indexAction() 
    { 

    } 

    public function createAction() 
    { 
     $this->assets 
      ->addJs('js/jquery.js') 
      ->addJs('js/user.js'); 

     $this->view->pick('/users/create'); 
    } 
} 

ただし、ビューを拾い取得していないようだ、と現在のビューのHTMLテキストは、Ajaxリクエストの誤差関数に返されます。 私は間違っていることを理解していません。助けてください。

+0

どこ '/ユーザー/ create'を行います(単一の)ルートが先に進み、 '/ users/create'(複数)を使って後でなぜですか? – Peon

+0

謝罪、それはタイプミスで、両方とも '/ users/create'でなければならず、' create.phtml'ファイルを含む 'views'フォルダ内のusersフォルダにつながります。 – user3010617

+0

そしてAJAXが'phtml'ファイルからデータを取得しますか? – Peon

答えて

0

正しい方法は、phalcon mvc構造を使用する必要があります。

あなたのプロジェクトディレクトリは、この(基本例)のようになります。

-app 
    -controllers 
    -models 
    -views 
-public 

あなたが実際にこの $this->view->pick('/users/create');

のようなあなたを、あなたのビューを選択する必要はありません。この構造を尊重した場合のみにしていビューディレクトリのパスをビューサービスに設定する

$di->setShared('view', function() use ($config, $di) { 

    $view = new View(); 
    $view->setViewsDir("path/to/your/views"); 
    $view->setLayoutsDir("path/to/your/layuts"); 

    $view->registerEngines(array(
     '.volt' => function ($view, $di) use ($config) { 

      $volt = new VoltEngine($view, $di); 

      $volt->setOptions(array(
       'stat' => true, 
       'compileAlways' => true 
      )); 

      return $volt; 
     }, 
     '.phtml' => 'Phalcon\Mvc\View\Engine\Php' 
    )); 

    return $view; 
}); 

json応答を受け取る場合はあなたは今それでデータオブジェクトとJSONレスポンスを受信する必要がありそう あなたのコントローラがこの

use Phalcon\Mvc\Controller; 

class UserController extends Controller 
{ 
    public function indexAction() 
    { 

    } 

    public function createAction() 
    { 

     $this->assets 
      ->addJs('js/jquery.js') 
      ->addJs('js/user.js'); 

     $this->response->setJsonContent(["data" => ["Your data"]]); 
     $this->response->send(); 
    } 
} 

そして、あなたのjsの関数のようになります、最初のものを送信する必要が

関連する問題