CakePHP расширяет форматирование валюты - PullRequest
2 голосов
/ 24 мая 2011

Мне нужно расширить вспомогательный номер, чтобы включить другие валюты.Используя функцию «addFormat» в помощнике по номерам, я создал новый «CurrenciesHelper» для добавления этих валют.

<?php

class CurrenciesHelper extends NumberHelper {

Я знаю, что этот помощник должен иметь возможность запустить эту функцию немедленно .Что мне не хватает, чтобы содержать это, чтобы он запускался и добавляет этот формат?

     $this->Number->addFormat('CAD', array(
        'before'=>'$',
        'after' => false,
        'zero' => 0,
        'places' => 2,
        'thousands' => '.',
        'decimals' => ',',
        'negative' => '()',

}

Ответы [ 2 ]

4 голосов
/ 26 марта 2012

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

Это помогает нам настраивать форматы валют в app/Config/core.php, например:

App::uses( 'CakeNumber', 'Utility' );

CakeNumber::addFormat( 
    'CAD', 
    array(
       'before' => '$ ', 'after' => false, 
       'zero' => 0, 'places' => 2, 'thousands' => '.',
       'decimals' => ',', 'negative' => '()', 'escape' => true
    ) 
);

// ... and any more definitions to follow.

Как только ваши определения валют являются частью базовой конфигурации, вы можете использовать их в любом представлении, используя NumberHelper, например $this->Number->currency( $c, 'CAD' ).

1 голос
/ 25 мая 2011

ПРЕДВАРИТЕЛЬНЫЙ ОТВЕТ ИЗМЕНЕН: В связи с положением функций, после факта.Пришлось изменить на:

function __beforeRender(){
}

Вызывал перезапись других пользовательских валют.

Инкапсулируя его в функцию конструкции, он запускался на вспомогательной конструкции.Я был уверен, чтобы включить родительский конструктор на всякий случай.

function __construct() {
    parent::__construct();
    // code goes here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...