Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
Watched Topics
FAQ
Поиск
Пользователи
Группы
Регистрация
Профиль
Войти и проверить личные сообщения
Вход
Список форумов Cake-PHP.ru
->
Общий
Ответить
Имя
Тема
Сообщение
Смайлики
Дополнительные смайлики
Цвет шрифта:
По умолчанию
Тёмно-красный
Красный
Оранжевый
Коричневый
Жёлтый
Зелёный
Оливковый
Голубой
Синий
Тёмно-синий
Индиго
Фиолетовый
Белый
Чёрный
Размер шрифта:
Размер шрифта
Очень маленький
Маленький
Обычный
Большой
Огромный
Закрыть теги
[quote="michas"]еще можно сделать так: [code] $time = ClassRegistry::init('Time', 'helper'); [/code] прописать в начале элемента[/quote]
Настройки
HTML
ВЫКЛЮЧЕН
BBCode
ВКЛЮЧЕН
Смайлики
ВКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Отключить в этом сообщении смайлики
Если у вас плохое зрение или вы не можете прочесть этот код по какой-то другой причине, то обратитесь за помощью к
Администратору
.
Код подтверждения: *
Введите код в точности так, как вы его видите. Код является регистро-зависимым, а символ нуля имеет косую линию внутри цифры.
Часовой пояс: GMT + 3
Перейти:
Выберите форум
CakePHP Форум
----------------
Общий
Установка и настройка
Творчество
Вопросы и пожелания
Комментарии к главам руководства по CakePHP 1.1
Обзор темы
Автор
Сообщение
evilbloodydemon
Добавлено: 18 Мар 2009 20:37:06
Заголовок сообщения:
апп_контроллер нужно скопировать из кэйк/либс в апп и там его править - это во-первых. во-вторых это самое раскрасивое решение. и в-третьих ты неправильно понимаешь, потому что лэйаут рисуется тем контроллером, который вызывается ээ.. ну скажем так, из браузера. то есть /items/view - ItemsController, /categories/index - CategoriesController, в общем суть ясна. и поэтому, тк хелперы грузятся контроллерами, тайм хелпер должен присутсвовать в каждом из них.
что касается NewsControllera - то при requestAction он всего лишь возвращает данные, до рендера он дойти не успевает.
п.с. вариант с ClassRegistry тоже неплох.
nws
Добавлено: 18 Мар 2009 19:44:17
Заголовок сообщения:
Добавил var $helpers = array('Html', 'Form', 'Time'); в ./cake/libs/controller/app_controller.php - запаботало, но это не очень красивое решение...
После создал новый шаблон и изменил немного контроллер
Код:
function newsLeft()
{
$this->layout = 'template2';
$order = 'News.id DESC';
$news = $this->News->findAll(null,null,$order, NEWS_LEFT_COUNT);
if(isset($this->params['requested']))
{
return $news;
}
$this->set('news', $news);
}
Теперь, как я понимаю, лайот отрисовывается в NewsController, но все равно не видит хелпер, почему ?
michas
Добавлено: 18 Мар 2009 19:37:54
Заголовок сообщения:
еще можно сделать так:
Код:
$time = ClassRegistry::init('Time', 'helper');
прописать в начале элемента
evilbloodydemon
Добавлено: 18 Мар 2009 19:21:56
Заголовок сообщения:
не. news контроллер в данном случае только возвращает значение через реквест экшн, а лэйаут (и соответственно элемент) у тебя отрисовывается в контексте какого-то другого контроллера. подключи-ка тамй хелпер в апп_контроллер и посмотрим, что будет.
nws
Добавлено: 18 Мар 2009 19:11:05
Заголовок сообщения:
evilbloodydemon писал(а):
а в контроллере, который отрисовывает элемент, подключен ли тайм хелпер?
Код:
class NewsController extends AppController {
var $name = 'News';
var $helpers = array('Html', 'Form', 'Time');
evilbloodydemon
Добавлено: 18 Мар 2009 19:04:01
Заголовок сообщения:
а в контроллере, который отрисовывает элемент, подключен ли тайм хелпер?
nws
Добавлено: 18 Мар 2009 18:58:27
Заголовок сообщения: Подключить Helper к элементу
Всем привет!
Как подключить хелпер к элементу?
API говорит:
Цитата:
element( $name, $params = array ( ), $loadHelpers = false )
Пишу в шаблоне
Код:
<? echo $this->element('newsLeft',array(), true); ?>
Выводит ошибку:
Цитата:
Fatal error: Call to a member function format() on a non-object in /var/www/lan/app/views/elements/newsLeft.ctp on line 6
Код:
news_controller.php
Код:
class NewsController extends AppController {
var $name = 'News';
var $helpers = array('Html', 'Form', 'Time');
function newsLeft()
{
$order = 'News.id DESC';
$news = $this->News->findAll(null,null,$order, NEWS_LEFT_COUNT);
if(isset($this->params['requested']))
{
return $news;
}
$this->set('news', $news);
}
}
newsLeft.ctp
Код:
<?php $a = $this->requestAction('/news/newsLeft'); ?>
<div id="box-1">
<h1 class="heading">Новости</h1>
<ul>
<?php foreach ($a as $key => $val): ?>
<li> <span class="date"><?echo $time->format('d.m.Y',$news['News']['created']);?></span>
<p>
<?echo $val['News']['short'];?>
</p>
<p> <? echo $html->link('Далее...','/news/preview/'.$val['News']['id'],array('style'=>'padding-left:220px;'));?></p>
</li>
<?php endforeach;?>
</ul>
</div>
Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB
Если ничего интересного не нашли, можно рекламу почитать, а рекламируется у нас сегодня «».