0

私はcakephpappcontrollet.phpファイルに1つの関数を作成しました。そのIDからそのレコードの詳細を取得します。関数については以下で説明します。

function getDetail($id = null)  // to check that user is valid or not 
  {
    $data = $this->ModelName->find('first',array('conditions'=>array('ModelName.is_active'=>'Y','ModelName.is_deleted'=>'N','ModelName.primaryKey'=>$id)));
    if($data !=array())
    {
      // return true;
      return $data;
    } else {
      $data = array();
      return $data;
      //return false;
    }
  }

ここで、任意のコントローラーからこの関数を呼び出して、レコードの詳細を取得したいと思います。たとえば、Userscontroller、adminscontroller、marketscontrollerなどからこの関数を呼び出すと、関連データが返されます。

私の問題は、appcontrollerが、要求がどのコントローラーから、どのモデルからユーザーに送信されたかをどのように知る必要があるかということです。

誰かが私がこれを解決するのを手伝ってくれる?

前もって感謝します

4

1 に答える 1

1

この関数を AppModel に配置し、関連するモデルを使用して各コントローラーから呼び出します。関数は次のようになります。

class AppModel extends Model
{
  public function getDetail($id = null) {
    $data = $this->find('all', array(
      'conditions' => array($this->name.'.id' => $id)
    ));

// ...

モデルからの呼び出しに応じて、適切なモデルが自動的に使用されます。このような呼び出しは次のようになります。

class UsersController extends AppController
{
  public $uses = array('User', 'Market');

  public function index()
  {
    // Fetch data from markets database
    $this->Market->getDetail($id);
    // Fetch data from users database
    $this->User->getDetail($id);

// ...

この場合、モデル Market を使用してデータベースから詳細を取得します。

于 2012-11-24T09:55:48.203 に答える