にとって CakePHP 2.3.8
CronController.phpで別のコントローラー関数を呼び出すにはどうすればよいですか
何か案は?
以下はコードです:
App::import('Controller', 'Products'); // mention at top
// Instantiation // mention within cron function
$Products = new ProductsController;
// Call a method from
$Products->ControllerFunction();
それが誰かを助けることを願っています!
コントローラアクションで$this->requestAction();
メソッドを使用します。これは最も推奨されるパターンではありませんが、便利な場合があり、パラメーターに基づいてデータを返したり、ビューをレンダリングしたりできます。
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));
}
私はこれに対する解決策を見つけるためにマニュアルを参照しました。
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