【发布时间】:2019-02-21 15:45:39
【问题描述】:
我正在尝试通过 AJAX 请求从我的控制器执行 Shell。
在我的控制器中:
public function log_import() {
$this->autoRender = false;
App::import('Console/Command', 'AppShell');
App::import('Console/Command', 'IzigetlogShell');
$job = new IzigetlogShell();
$job->dispatchMethod('main');
echo "REPONSE";
}
还有我的外壳:
<?php
App::import('Core', 'Controller');
App::import('Controller', 'Suivis');
class IzilogShell extends AppShell {
public $uses = array('Suivi');
-- DU CODE --
$this->Suivi = new SuivisController();
$this->Suivi->constructClasses();
$exist_date = $this->Suivi->find('first',
array(
'conditions' => array('Suivi.date' => $date_calcul)
));
}
但我总是收到相同的错误消息: PHP 致命错误:在第 XX 行的 C:\wamp\www\iziboxLogs\app\Console\Command\IzigetlogShell.php 中调用未定义的方法 SuivisController::find()
我尝试从控制台执行 shell,但我得到了同样的错误。
有什么想法吗?谢谢,马丁
【问题讨论】:
-
你的标题有一部分是错误的——你也得到了它的另一种方式——从 shell 执行一个控制器。无论哪种方式,它都是滥用(Cake)PHP和MVC这样做。恐怕到目前为止你得到的答案也好不到哪里去。
-
@马克。没错,我专注于 Shell 代码,而忽略了 Shell 类也从控制器调用的事实。
-
您可以参考我的帖子以获得答案。 stackoverflow.com/a/54801498/9406765 谢谢。
标签: shell cakephp controller console