Вызов специфической функции из поведения CakePHP 2.10.12 не работает - PullRequest
0 голосов
/ 23 апреля 2019

Хей.В настоящее время я создаю функцию в Behavior в CakePHP 2.10.12, как показано ниже:

<?php
App::uses('CakeTime', 'Utility');
App::uses('CakeNumber', 'Utility');
class ConverterBehavior extends ModelBehavior {
    private $timezone;
    private $locale;
    private $currency;

    function hellow() {
        return "Hellow from behavior";
    }

    function initConverter($locale, $timezone, $currency) {
        $this->locale = $locale;
        $this->timezone = $timezone;
        $this->currency = $currency;
        setlocale(LC_ALL, $locale);
    }

    public function getCurrentLocale() {
        return $this->locale;
    }

    function convertCurrency($currencyAmount) {
        return CakeNumber::currency($currencyAmount, $this->currency);
    }

    function convertDate($date) {
        return CakeTime::i18nFormat($date, null, false, $this->timezone);
    }

}
?>

Тогда вышеупомянутое поведение используется моей моделью, как показано ниже:

<?php

class Test extends AppModel {
    public $actsAs = array('Converter');
}

И затемЯ вызываю функцию, которую я создал из поведения в моем контроллере, как показано ниже:

public function converterModel() {
    $this->Test->initConverter('ja_JP', 'Asia/Tokyo', 'JPY');
    $temp = $this->Test->convertCurrency(23456789901.123456);
    debug($this->Test->hellow());
    // $this->set('jpDate', $this->Test->convertDate(new DateTime));
}

Проблема в initConverter не может быть инициализирована.Я проверяю переменную, которая вводится из контроллера, и все эти переменные равны нулю (это странно).Но когда я вызываю hellow() (функция в поведении), результат отображается в моем представлении.Так чего-то здесь не хватает?Спасибо

Примечание: это сообщение об ошибке, отображаемое на мой взгляд: enter image description here

1 Ответ

1 голос
/ 23 апреля 2019

Посмотрите на предупреждение / уведомление, вы получаете объект, где вы ожидаете строку / число.

Первый аргумент метода поведения, вызываемого извне, всегда будет экземпляром модели, к которой привязано поведение, т. Е. Сигнатуры вашего метода должны быть такими:

function initConverter(Model $model, $locale, $timezone, $currency)

function convertCurrency(Model $model, $currencyAmount)

// etc...

Смотрите также

...