| Профиль | Блог (52) | Комментарии (794) | Закладки (7) | Продукты (7) |
Хочу понять, как передавать значение из поля datetime в даном случае в тело письма.
Для примера добавил поле datetime в функцию: function create() шестеренки mail.
Вместо человекопонятной даты.
Понимаю, что в моем случае по-другому и не должно быть, пытаюсь понять разбирая код в движке где используется datetime но пока не нашел решение.
Для примера добавил поле datetime в функцию: function create() шестеренки mail.
function create($id = FALSE){
$this->form->set('create_mail');
d('mail');
$this->form->input('to',array('label'=>t('to'),'description'=>t('to_description'),'js_validation'=>'required','validation'=>'required'))
->input('subject',array('label'=>t('subject'),'js_validation'=>'required','validation'=>'required'))
->datetime('created_date',array('range'=>'1900-'.date('Y'),'value'=>date('Y-m-d H:i:s'))) // Добавил
->editor('theme',array('label'=>t('message'),'js_validation'=>'required','validation'=>'required')) // Изменил
->buttons('preview','send');
if($result = $this->form->result(TRUE)){
switch($result['action']){
case 'preview':
$result['body'] = nl2br($result['body']);
$this->_template("preview",$result,3);
$this->form->set_values($result);
$this->form->compile();
break;
case 'send':
default:
$result['subject'] = t('title1',$result['subject']); // Добавил
$result['body'] = ($result['subject'])."\n"; // Добавил
$result['body'] .= t('title2',$result['created_date'])."\n"; // Добавил
$result['body'] .= t('title3',$result['theme']); // Добавил
if($this->pm->send($result)){
redirect(l("/mail/inbox/"));
}
else {
$this->form->compile();
}
...
[mail]
title1 = "<b>Тема:</b> %s"
title2 = "<b>Дата:</b> %s"
title3 = "<b>Сообщение:</b> %s"
...
Вместо человекопонятной даты.
Понимаю, что в моем случае по-другому и не должно быть, пытаюсь понять разбирая код в движке где используется datetime но пока не нашел решение.


Почему бы просто не сделать:
if($result = $this->form->result()){ debug($result['created_date']); }if($result = $this->form->result(TRUE)){вставитьdebug($result['created_date']);debug($result['created_date']);, но после нажатия кнопки отправить попадаешь на страницу:Вместо
$result = $this->form->result(TRUE);Напиши$result = $this->form->result();И будет тебе счастье!А почему сейчас выполнение кода обрывается на строке debug($result['created_date']); и в окне браузера наблюдаю string(16) «2009-12-25 01:30» вместо редиректа на страницу /mail/inbox/?
Мне не хочется делать отдельное, дополнительное поле аналогичное created_date в таблице pm, чтобы не было дополнительных запросов к БД, а хочется перед отправкой анкеты собрать все из полей формы в тело письма и записывать их все вместе в поле body. Сейчас все так и работает за исключением created_date.
После этого коммента все встало на свои места.
Теперь нужно просто присоединить нужные строки к $result['body'].
Скажите, пожалуйста, а разве строка №21 из кода в посте
$result['body'] .= t('title2',$result['created_date'])."\n"; // Добавилне то, что надо? Ведь при такой записи очень хорошо передаются данные из любых других полей кроме datetime.if($result = $this->form->result(TRUE)){ ... }Нужно было:# if($result = $this->form->result()){ ... }if($result = $this->form->result(TRUE)){ ... }браузер выводит:array(5) { ["day"]=> string(2) "28" ["month"]=> string(2) "12" ["year"]=> string(4) "2009" ["hour"]=> string(2) "22" ["minute"]=> string(2) "05" }А когда пищу:
if($result = $this->form->result()){ ... }то браузере:string(16) "2009-12-28 22:05"Если убираю:
debug($result['created_date']);то тогда все в порядке, только в теле письма Дата:Array :-(Если debug выдает значение «2009-12-28 22:05», то после того, как ты его уберешь, значение останется таким же :-)
Итого Было:
$result['body'] .= t('title2',$result['created_date'])."\n";Добавил скобки (...)$result['body'] .= t('title2',($result['created_date']))."\n";И получил приподнятое Новогоднее настроение :-)