CakePHP 2.0.4: Использование помощника «Number» в контроллерах - PullRequest
0 голосов
/ 15 декабря 2011

Я знаю, что использование методологий в контроллерах против методологий 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)}.");
}

Я сейчас работаю над проектом 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

Есть идеи?

Ответы [ 2 ]

11 голосов
/ 15 декабря 2011

вы не должны использовать помощников в контроллерах.Некоторое время назад я предложил, чтобы для этого были библиотечные классы.надеюсь, это будет интегрировано в 2.1

до тех пор, пока вы не будете использовать

$Number = new NumberHelper(new View(null));
0 голосов
/ 02 декабря 2015

Я знаю, что уже поздно, но команда Cake Core включила в базовую библиотеку класс CakeNumber.Отныне мы должны использовать функции, указанные ниже, в нашем контроллере / модели вместо создания объекта helper.

CakeNumber::currency(mixed $number, string $currency = 'USD', array $options = array())
CakeNumber::defaultCurrency(string $currency)

Список дополнительных полезных функций см. В классе CakeNumber, а полный список основных библиотек см. На странице Core Libraries.

Надеюсь, это может кому-нибудь помочь.

...