PHPで書かれたプロジェクトの場合、クラスコントローラで複数の(または複数の)コントローラを呼び出せますか? http://img192.imageshack.us/img192/7538/mvc03.gifMVC - クラスコントローラで複数の(または複数の)コントローラを呼び出せますか?
での例は、ASK:を私は別のコントローラからアクションを呼び出す必要があります...そして、私は上の写真のように行うならば、私は外倫理いるんですか?
ありがとう、 Vinicius。
PHPで書かれたプロジェクトの場合、クラスコントローラで複数の(または複数の)コントローラを呼び出せますか? http://img192.imageshack.us/img192/7538/mvc03.gifMVC - クラスコントローラで複数の(または複数の)コントローラを呼び出せますか?
での例は、ASK:を私は別のコントローラからアクションを呼び出す必要があります...そして、私は上の写真のように行うならば、私は外倫理いるんですか?
ありがとう、 Vinicius。
out-ethics?誰でも...現実に戻る。
はい、コントローラは別のコントローラのアクションを呼び出すことができます。例えば、CakePHPでは、この機能は、あなたがあなた自身の圧延している場合は、それを実装する方法の詳細は、あなたのフレームワークに非常に固有のものになりますrequestAction
// pass uri to request action and receive vars back
$ot3 = $this->requestAction('/stories/xenu');
を経由して与えられます。
フレームワークを変更し、コントローラが失われた場所を見つけて、2番目のコントローラを追加する必要があります。
あなたはどのフレームワークを使用していますか?
のCodeIgniterを使っ例えば
、私はフレームワークを使用していません。私は自分のプロジェクトをMVC手法で作成しました。 – Vegetus
あなたは何でも構いません。あなたがしたくない場合は、MVCを使用する必要はありません。しかし、MVCでは、一度に1つのコントローラしかアクティブにしないでください。他のコントローラではなく、複数のビューまたはモデルが必要な場合があります。サイトのメニューやフッターのヘッダーとフッターの表示は、何も問題ありません。
はい、私自身のイントラネットプロジェクトでは、多くのモデルと多くのビューを制御する必要があります。しかしちょうど今私は彼があなたが望むいくつかの情報を処理するために別のコントローラが必要だったことを観察しました...ありがとう! – Vegetus
使用しているフレームワークで何でもできます。何らかの理由でネイティブに実行できない場合は、必要に応じてフレームワークを拡張できます。
私は個人的にはコントローラが別のコントローラを呼び出すという考えが嫌いです。理論的な見地からのみMVCのパラダイムをやや崩しているようです。代わりに必要な機能を含むライブラリクラスを作成し、両方のコントローラでそのクラスをメンバーとしてインスタンス化し、必要な関数を呼び出すことができます。
ライブラリ/ MyLib.php:
class MyLib
{
public function MyFunc()
{ /* do whatever */ }
}
コントローラ/ ControllerA.php:
class ControllerA extends Controller
{
public function index()
{
$this->load->library('MyLib');
$this->mylib->MyFunc();
}
}
コントローラ/ ControllerB:
class ControllerB extends Controller
{
public function index()
{
$this->load->library('MyLib');
$this->mylib->MyFunc();
}
}
ご返信ありがとうございます。私の会社のための私自身のイントラネットプロジェクトのためにCakePHPのrequestAction関数をコピーするつもりです...私は思うでしょう。ありがとう。 – Vegetus
問題ありません。喜んで助けてください。あなたが教育目的でやっているのであれば、独自のフレームワークを作成するのは素晴らしい方法です。しかし、実稼働環境であれば、コミュニティ構築、サポート、テスト、メンテナンス、機能豊富なので、多くの細かい事前構築されたフレームワーク(cakePHP、Zend、symfony)を使用することを提案する人がたくさんいます。 – webbiedave