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

Как передать большой объем данных при вызове контроллера

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



Зарегистрирован: 09 Окт 2007 15:25:31
Сообщения: 23

СообщениеДобавлено: 09 Окт 2007 15:48:29    Заголовок сообщения: Как передать большой объем данных при вызове контроллера Ответить с цитатой

Обычно вызов какого-либо контроллера модели использует $this->requestAction('Model/Controller/Param1/.../ParamN');

Можно ли на прямую вызвать для определенной модели ее контроллер и передать ему данные, например массив данных. Передача данных через requestAction в некоторых случаях не очень удобен...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Антон Исайкин
Site Admin


Зарегистрирован: 08 Окт 2007 12:02:56
Сообщения: 150
Откуда: Санкт-Петербург

СообщениеДобавлено: 09 Окт 2007 18:40:37    Заголовок сообщения: Ответить с цитатой

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



Зарегистрирован: 09 Окт 2007 15:25:31
Сообщения: 23

СообщениеДобавлено: 10 Окт 2007 08:47:09    Заголовок сообщения: Ответить с цитатой

Спасибо! Я думаю, что конечно это не самое красивое решение, но я решил попробывать передать данные через Session!
Razz
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Антон Исайкин
Site Admin


Зарегистрирован: 08 Окт 2007 12:02:56
Сообщения: 150
Откуда: Санкт-Петербург

СообщениеДобавлено: 10 Окт 2007 08:48:39    Заголовок сообщения: Ответить с цитатой

А глобализовать не получается? Ибо $_SESSION - это уже вообще костыль в данном случае.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
starosta



Зарегистрирован: 09 Окт 2007 15:25:31
Сообщения: 23

СообщениеДобавлено: 10 Окт 2007 17:02:52    Заголовок сообщения: Ответить с цитатой

Нет, все оказалось просто!
У меня есть форма, которая должна сохранять файл и описание к нему.
И есть две модели: Photo и File
В File я сохраняю данные о переданном файле, а Photo - описание и ссылку на File.
Решил так. В PhotosController проверяю валидность данных формы, потом вызывают $file_id=$this->requestAction('files/add/Photos');
Потом возвращенный результат $file_id использую.

В FilesController
Код:

function add($obj=null)
{
   if (!empty($obj) && isset($this->data[$obj]['file']))
   {
      $this->data['File']['file']=$this->data[$obj]['file'];
      else return false;
      if ($this->File->save($this->data))   return $this->File->id;
   }
   return   false;
}

Ведь данные формы будут доступны в данном случае и в $this->data['Photo'];

сейчас подумал о том, что можно использовать в форме не
$html->file('Photo/file'); а $html->file('File/file');
Тогда все упрощается!!! Wink Laughing
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KPOTOB
Гость





СообщениеДобавлено: 10 Окт 2007 22:45:35    Заголовок сообщения: Ответить с цитатой Изменить/удалить это сообщение

Жесть Shocked

И главное не понятно толи смеятся толи плакать
Вернуться к началу
starosta



Зарегистрирован: 09 Окт 2007 15:25:31
Сообщения: 23

СообщениеДобавлено: 10 Окт 2007 23:30:21    Заголовок сообщения: Ответить с цитатой

Пожалуйста немного разъясните как действует $this->Photo->File->save();

File в данном случае моя модель? Тогда как посторить такую красивую взаимосвязь?

Дело в том, что я хочу, чтобы Модель File с ее контроллерами можно было использовать и в других моделях без лишних переделок.

Я понял, что лучше через var $uses.
А requistAction нужен чтобы получать данные от другого контроллера или готовое отображение...

Можете подсказать, как лучше сделать аутотентификацию пользователя и отслеживание того, что его id действителен и есть в базе и ему разрешены соответствующие операции. Мне важно, что такой пользователь существует с верным id для дальнейших операций с базой...?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Антон Исайкин
Site Admin


Зарегистрирован: 08 Окт 2007 12:02:56
Сообщения: 150
Откуда: Санкт-Петербург

СообщениеДобавлено: 11 Окт 2007 00:41:30    Заголовок сообщения: Ответить с цитатой

starosta писал(а):
Можете подсказать, как лучше сделать аутотентификацию пользователя и отслеживание того, что его id действителен и есть в базе и ему разрешены соответствующие операции. Мне важно, что такой пользователь существует с верным id для дальнейших операций с базой...?

Прекрасный компонент obAuth решает эти проблемы. А еще для конкретных прав в к конкретному элементу можно использовать ACL.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
starosta



Зарегистрирован: 09 Окт 2007 15:25:31
Сообщения: 23

СообщениеДобавлено: 11 Окт 2007 08:29:05    Заголовок сообщения: Ответить с цитатой

спасибо! очень полезно! Laughing
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KPOTOB
Гость





СообщениеДобавлено: 11 Окт 2007 11:31:13    Заголовок сообщения: Ответить с цитатой Изменить/удалить это сообщение

starosta писал(а):
Пожалуйста немного разъясните как действует $this->Photo->File->save();

File в данном случае моя модель? Тогда как посторить такую красивую взаимосвязь?

Дело в том, что я хочу, чтобы Модель File с ее контроллерами можно было использовать и в других моделях без лишних переделок.

Я понял, что лучше через var $uses.
А requistAction нужен чтобы получать данные от другого контроллера или готовое отображение...


Согласно MVC - С отвечает за интерактив с пользователем - потому imho следует избегать вызова контроллера из контроллера (тем более что из можно сделать вызов из layout или view).
Согласно задней презентахи от Кейкщиков - максимум кода - во V - минимум в C - средне в M

В идеале один C о другом C не имеет представления и понятия вообще. Соотвественно чтобы все вертелось и крутилось без повторения кода нужно перебираться в M
Во V можно helpers использовать чтобы не повторяться (я себе почти для каждой модели делаю helpers)

Фраза
Цитата:
чтобы Модель File с ее контроллерами можно было использовать и в других моделях
imho звучит так что видения MVC все еще в Вашей голове не сложилось

Про красоту читать про отношение моделей - иначе область слишком широкая о чем писатьWink
Вернуться к началу
starosta



Зарегистрирован: 09 Окт 2007 15:25:31
Сообщения: 23

СообщениеДобавлено: 15 Окт 2007 08:25:23    Заголовок сообщения: Ответить с цитатой

Да я разобрался, код повторяющийся для контроллеров должен быть в компанентах, а для view - хелперы... А в модели по идее не должно быть никакого кода, кроме-того, который отвечает за хранение данных, то есть за сами данные...
Вся обработка на уровне контроллеров...
Я пошел по пути использования компонент для контроллеров и оказалось очень удобно и компактно, на использование его в контроллере всего 1-2 строчки кода... А удобство огромное Smile А еще, если нужно, чтобы все контроллеры имели доступ, к одной и той же функции, ее просто надо прописать в /app/app_controller.php Laughing
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
marazmus



Зарегистрирован: 15 Окт 2007 07:45:04
Сообщения: 16

СообщениеДобавлено: 15 Окт 2007 10:20:03    Заголовок сообщения: Ответить с цитатой

Пора формировать FAQ Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
starosta



Зарегистрирован: 09 Окт 2007 15:25:31
Сообщения: 23

СообщениеДобавлено: 15 Окт 2007 10:23:39    Заголовок сообщения: Ответить с цитатой

Согласен... Вот сделаю свой проект, который сейчас делаю на cakePHP... Тогда и забацаем... Laughing
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KPOTOB
Гость





СообщениеДобавлено: 15 Окт 2007 14:02:49    Заголовок сообщения: Ответить с цитатой Изменить/удалить это сообщение

starosta писал(а):
А в модели по идее не должно быть никакого кода, кроме-того, который отвечает за хранение данных, то есть за сами данные...
Вся обработка на уровне контроллеров...


http://cakephp.org/files/OCPHP.pdf

Страница 3. В Вашем случае это Bad Cake!
Вернуться к началу
how



Зарегистрирован: 20 Окт 2007 15:56:51
Сообщения: 18
Откуда: Киев

СообщениеДобавлено: 01 Ноя 2007 17:49:58    Заголовок сообщения: Ответить с цитатой

starosta писал(а):
Спасибо! Я думаю, что конечно это не самое красивое решение, но я решил попробывать передать данные через Session!
Razz


В таких случаях используется шаблон Singleton, Registry.
В Cake - это класс Configure. Его значения не сохраняются после завершения скрипта в отличии от сессии.
_________________
Мой блог о CakePHP - PHP в SouthPark
http://php.southpark.com.ua
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Начать новую тему   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Cake-PHP.ru -> Общий Часовой пояс: GMT + 3
Страница 1 из 1

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


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

Рейтинг@Mail.ru