Список форумов Cake-PHP.ru Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
 
 Watched TopicsWatched Topics   FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

файл как datasource для модели

 
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
xxx

цитировать



Зарегистрирован: 03 Мар 2008 15:58:41
Сообщения: 24

СообщениеДобавлено: 15 Мар 2008 13:00:46    Заголовок сообщения: файл как datasource для модели Ответить с цитатой

Есть модель, скажем page которая хранит название файла страницы которую хотим редактировать типа
page:
id:1 filename:index.html

хотелось бы что бы модель отдавала контролелру содержимое index.html как часть объекта $this->Page и при сохранении соответственно сохраняла бы Page['contents'] в index.html а остальное в БД

Результатом хочу получить в view форму сделанную хелпером, где одним из полей будет содержимое index.html

или это не рально?
может быть есть какой то другой способ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
DeeperMD

цитировать



Зарегистрирован: 08 Фев 2008 15:04:11
Сообщения: 144
Откуда: $Молдова->Кишинёв->Буюканы()

СообщениеДобавлено: 15 Мар 2008 14:38:18    Заголовок сообщения: Ответить с цитатой

Ну со view всё понятно наверное..

А с моделью реально почему не реально..

Залазаешь в модель пишешь там свою функцию, которая хоть борщ готовит Smile , а потом её вызываешь.. как будто это стандартный find...

сохранение тоже не очень сложное, просто перегружаешь метод save в модели делаешь всё что нужно (тобишь пишешь contents в файл и потом в этот же contents записываешь имя файла), далее полученный из контроллера массив (модифицированный твоей перегрузкой) подсовываешь стандартному save.

Вот и всё..

Если кто знает другой метод или где-то рациональнее, сам приму к сведению..
Very Happy
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KPOTOB

цитировать



Зарегистрирован: 09 Дек 2007 14:46:20
Сообщения: 127

СообщениеДобавлено: 15 Мар 2008 17:24:53    Заголовок сообщения: Ответить с цитатой

xxx
Имплименть beforeSave в AppModel или в Behavior. Но понимай что транзакционности не будет
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
xxx

цитировать



Зарегистрирован: 03 Мар 2008 15:58:41
Сообщения: 24

СообщениеДобавлено: 15 Мар 2008 19:14:52    Заголовок сообщения: Ответить с цитатой

мне бы примеры, я ничего умнее такого пока не придумал:

модель
function getElementContent($filename = null)
{
$x = fopen($filename.".ctp", "r");
$contents = fread($x, filesize($filename.".ctp"));
fclose($x);
return $contents;
}

контролер
$this->set('content', $this->ProjElement->getElementContent("../views/".$element['ProjElement']['dir']."/".$element['ProjElement']['filename']));

view
<textarea cols="75" rows="30" >
<?php echo $content ?>
</textarea>
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
DeeperMD

цитировать



Зарегистрирован: 08 Фев 2008 15:04:11
Сообщения: 144
Откуда: $Молдова->Кишинёв->Буюканы()

СообщениеДобавлено: 15 Мар 2008 19:31:09    Заголовок сообщения: Ответить с цитатой

Хмм..

А если поразмыслить...

Модель:

Код:
 function findWithContent($id = null)
{
$row = $this->findById($id)
$filename = $row['Model']['contents'];
$x = fopen($filename, "r");
$row['Model']['contents']= fread($x, filesize($filename));
fclose($x);
return $row;
}


Котроллер:
Код:
$this->set('content', $this->Model->findWithContent($id));


View:
Код:
<div>
<?=$content['Model']['title'] ?>
<div>
<textarea cols="75" rows="30" >
<?=$content['Model']['contents'] ?>
</textarea>


А вобще посоветую.. если юзаете объектно ориентированный фрэймворк, то переводите мышление на ООП...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
xxx

цитировать



Зарегистрирован: 03 Мар 2008 15:58:41
Сообщения: 24

СообщениеДобавлено: 15 Мар 2008 21:44:43    Заголовок сообщения: Ответить с цитатой

спасибо, поприличней выглядит чем мой вариант

Цитата:
А вобще посоветую.. если юзаете объектно ориентированный фрэймворк, то переводите мышление на ООП...


стараюсь, но не всегда получается Very Happy
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Имя
Сообщение

Смайлики
Very Happy Smile Sad Surprised
Shocked Confused Cool Laughing
Mad Razz Embarassed Crying or Very sad
Evil or Very Mad Twisted Evil Rolling Eyes Wink
Exclamation Question Idea Arrow
Дополнительные смайлики

 
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы можете редактировать свои сообщения
Вы можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Рейтинг@Mail.ru