web-dev-qa-db-ja.com

CakePHP 2.3.8:CronController.phpで別のコントローラー関数を呼び出す

にとって CakePHP 2.3.8CronController.phpで別のコントローラー関数を呼び出すにはどうすればよいですか

何か案は?

8
Aditya P Bhatt

以下はコードです:

App::import('Controller', 'Products'); // mention at top

// Instantiation // mention within cron function
$Products = new ProductsController;
// Call a method from
$Products->ControllerFunction();

それが誰かを助けることを願っています!

34
Aditya P Bhatt

コントローラアクションで$this->requestAction();メソッドを使用します。これは最も推奨されるパターンではありませんが、便利な場合があり、パラメーターに基づいてデータを返したり、ビューをレンダリングしたりできます。

5
Derek

App::import('Controller', 'XXX');は私には機能しませんでした。

Cake3.0を使用しています

しばらくして私はそれを機能させました

呼び出したいコントローラーの機能:

    public function validateSomething($var = null)
    {
         return ...
    }

別のコントローラーで、何かを検証するために前の関数を呼び出す必要がある場合:

 public function index()
    {
      // load the model you need depending on the controller you need to use
        $this->loadModel('User');

     // use this in case you have tu instantiate a new entity
        $user = $this->User->newEntity();
        $user = $this->User->patchEntity($user, $this->request->data);

     // using the controller on the fly, you could assign it to a var
     // call the function you need
        $result = (new UserController())->validateSomething($user);

     // Test if result has something:
        $this->Flash->success(__($result));
     }
4
lele

私はこれに対する解決策を見つけるためにマニュアルを参照しました。

public function that_controller_function_you_are_writing () {

    # this is cakes way of running required
    App::import('Controller', 'Users');
    $UsersController = new UsersController;

    # now you can reference your controller like any other PHP class
    $UsersController->that_function_you_needed();
}

これはリンクです: http://book.cakephp.org/2.0/en/core-utility-libraries/app.html

4
usumoio