Исправлено возвращение значения в cakePHP для возврата значения из функции контроллера представления. - PullRequest
1 голос
/ 12 февраля 2009

У меня есть функция внутри функции представления внутри класса модели в файле model.php, который выглядит следующим образом

function sqlToUnix($date){
    $YMDThenHMS = explode(" ", $date);
    $YMD = explode("-", $YMDThenHMS[0]);
    $HMS = explode(":", $YMDThenHMS[1]);
    $UnixTime = mktime($HMS[0], $HMS[1], $HMS[2], $YMD[1], $YMD[2], $YMD[0]);

    return $UnixTime;
}

Проблема в том, что когда он возвращает $ UnixTime, возвращаемое значение можно использовать внутри функции представления, специфичной для контроллера модели, но оно не будет отображать мое представление (останавливает распространение сценария)

Есть ли место, где я могу создать подобные функции для использования ЛЮБОЕ в ЛЮБОМ Контроллере?

Например, функция time (), встроенная в сам PHP, я хочу иметь возможность использовать sqlToUnix в любом месте

Ответы [ 5 ]

1 голос
/ 14 февраля 2009

Если вы хотите вызывать эту функцию из любого места, то есть в моделях, контроллерах, представлениях, поведении, компонентах и ​​помощниках, вы можете поместить ее в файл app / config / bootstrap.php. Вот для чего это. Как только он станет доступен глобально просто как sqlToUnix ();

0 голосов
/ 21 октября 2009

Вы можете получить доступ к этой функции через контроллер и передать ее в представление:

//Controller

//inside a controller action
{
$TIMESTAMP = $this->Model->sql2unix($this->Model->getTimestamp());
$this->set('timestampe',$TIMESTAMP);
// or does this even do not work?
}

в противном случае вы можете создать компонент

//inside the component // inside of a component method
{
$MODEL = loadModel('ModelName');
$return = $MODEL->sql2unix($MODEL->getTimestamp());

return $return;
}

Практически «не важно», где размещать ваш код, вы просто должны следовать структуре папок / class / helper / method / component программы cakephp. Прочтите руководство по компонентам или помощникам, и вы сразу все поймете.

0 голосов
/ 09 сентября 2009

Вы можете написать функцию bootstrap.php (хотя лучше вместо этого включить другой файл PHP из bootstrap.php).

У меня обычно есть какие-либо дополнительные функции или настройки в файле в каталоге / app / config, и я включаю их в мой файл bootstrap.php:

require_once(APP.'config'.DS.'my_file_of_whizzy_functions.php');

Функция будет доступна во всем приложении CakePHP.

Кроме этого, делает strtotime ($ sqlDate); не конвертировать время SQL в метку времени Unix?

0 голосов
/ 12 февраля 2009

Для вашей конкретной функции вы уверены, что нет встроенных функций, которые возвращают ваш формат UnixTime?

Есть ли место, где я могу создать подобные функции для использования ЛЮБОЕ в ЛЮБОМ Контроллере?

class MyHelpers
{
    public static function sqlToUnix($SQLDate)
    {
        // code
        return $result;
    }
}

// call me this way, anywhere:
$result = MyHelpers::sqlToUnix($SQLDate);
0 голосов
/ 12 февраля 2009

Мне удалось решить проблему, сохранив функцию в appController.php и вызвав функцию, когда необходимо использовать

$this->sqlToUnix($SQLDate);

Извините, что задал вопрос, но я только что вспомнил appController, когда опубликовал это> <</p>

...