CakePHP 2.0.4:在控制器中使用"数字"助手

Nic*_*ick 0 model-view-controller cakephp cakephp-2.0

我知道在控制器中使用帮助器是违反MVC方法的,但在某些情况下它很有用.例如,考虑我的一个处理图像上传的CakePHP 1.3.13项目的控制器代码片段:

elseif ($_FILES['data']['error']['ModelName']['field_name'] === UPLOAD_ERR_INI_SIZE) {
    App::import('Helper', 'Number');
    $Number = new NumberHelper();

    $this->Session->setFlash("The image you uploaded was not saved because it appeared to be larger than {$Number->toReadableSize($max_filesize_in_bytes)}.");
}
Run Code Online (Sandbox Code Playgroud)

我现在正在开发一个CakePHP 2.0.4项目,我使用了相同的代码,除了我替换App::import('Helper', 'Number');App::uses('NumberHelper', 'View/Helper');,我得到了这个错误信息:

Warning (4096): Argument 1 passed to Helper::__construct() must be an instance of View, none given, called in /Path/To/My/Website/app/Controller/MyController.php
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

mar*_*ark 11

你不应该在控制器中使用助手.我很久以前就提出应该有这样的库类.希望这将被整合到2.1中

在那之前你应该使用

$Number = new NumberHelper(new View(null));
Run Code Online (Sandbox Code Playgroud)