私はPHP MVCフレームワークで作業しています。本当にうまくいく。ビジネスレイヤー(モデル)とビジネスロジック(コントローラー)の分離が好きです。しかし、私はちょうど問題につまずいた。 userController.phpが呼び出されたこの場合 http://localhost/user/showall/MVC構造体のオブジェクトデータを取得
とそのファイル内で実行されます方法のshowallAction()があります:
が思う私は、次のURLに移動します。ここでのことです。
showallAction()メソッドでは、私は単に私のためにすべてのユーザーを取得するモデルに要求を行います。このような何か:
public function showallAction()
{
// create userModel object
$users = new userModel();
// get all users and assign the data to a variable which can be accessed in the view
$this->view->users = $users->getAllUsers();
// render views
$this->view->render();
}
だから、この方法は、すべてのユーザーを取得し、変数にuserModelから返されたデータを割り当て、私は簡単に私の見解では、返されたデータを扱うことができます。 MVCの典型的なものです。
ここに問題があります。 ネイティブのiphone版も作成する必要があります。もちろん、見た目はまったく違うでしょう。
http://localhost/user/showall/
そして、それはちょうど私(JSON形式)の配列背中を与えること:だから私は実際に何をしたいすべてはこのURLを要求することです。だから私はそれをモバイル開発に使うことができます。
しかし、showallAction()メソッドは、Webブラウザの表示であることを前提としているため、これは今のところ明らかにできません。これは、JSONをフォーマットしてエコーしません。代わりに、単純にユーザーの配列を変数にアサートします。
これは、データを取得するために、特にモバイルデバイス用に別のメソッド "showallMobileAction()"を作成する必要があることを意味します。しかしこれは優雅な解決策ではありません。私はそれが良い方法だと確信しています...
誰でも私はこの問題を解決することができますか?
これは実行可能な解決策のようです。 .htmlや.jsonのようなURLに拡張子を付けることは私にとっては問題ではありません。しかし、私はそれの後に何をしますか? baseControllerに格納されているURLに渡された拡張子があるとします。$ urlExt; ---これは、$ urlExtの型をチェックするすべてのAction()メソッド(たとえば、userController内)でチェックを作成する必要があるのでしょうか? – w00
@ w00では、拡張子に基づいて異なる出力を与えるためにビューを変更する必要があります。別のViewインスタンスを初期化するか、または実際に出力をレンダリングすることを直接担当する他のオブジェクトを渡します。 この部分は、独自のMVCパターンの実装と密接に関連しています。 –