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

cakephp routes

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

цитировать



Зарегистрирован: 05 Окт 2009 20:10:13
Сообщения: 10

СообщениеДобавлено: 05 Окт 2009 20:11:03    Заголовок сообщения: cakephp routes Ответить с цитатой

На главной странице нужно, например, вывести категории, список товаров и еще что-либо. Категории и товары это разные модули. у них свои контроллеры и т.д. В роутах можно прописать только один контроллер для каждого адреса. Как можно собрать все воедино на главной странице и на других? Например, список категорий нужен везде
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Vlad

цитировать



Зарегистрирован: 02 Ноя 2007 11:45:52
Сообщения: 241

СообщениеДобавлено: 05 Окт 2009 22:03:53    Заголовок сообщения: Ответить с цитатой

Читайте внимательно раздел, где описан роутер, и будет вам счастье Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
foma19

цитировать



Зарегистрирован: 05 Окт 2009 20:10:13
Сообщения: 10

СообщениеДобавлено: 05 Окт 2009 22:47:22    Заголовок сообщения: Ответить с цитатой

Router::connect(
'URL',
array('paramName' => 'defaultValue'),
array('paramName' => 'matchingRegex')
)

вот в общем виде роут. можно прописать только один контроллер и один метод. а мне допустим нужно и категории вывести и товары и данные из корзины и т.д. как в этом случае быть?

перечитывал про роуты 100 раз на оф сайте. этого момента так и не нашел
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
justiam

цитировать



Зарегистрирован: 28 Июл 2008 00:49:33
Сообщения: 24

СообщениеДобавлено: 06 Окт 2009 06:48:07    Заголовок сообщения: Ответить с цитатой

Вот твой роутер:

Код:
Router::connect('/', array('controller' => 'goods','action' => 'summary'));


В контроллере goods подключаешь модели Good, Category, Basket (или как там называется корзина?):

Код:
var $uses = array('Good','Category','Basket');


В действии summary забираешь и обрабатываешь нужные тебе записи из таблиц Goods, Categories и Baskets - и передаешь в вид:

Код:
$this->set('goods', $goods);
$this->set('categories', $categories);
$this->set('basket', $basket);


В виде /views/goods/summary.ctp отображаешь в нужном тебе виде данные из переменных (массивов, наверно) $goods, $categories и $basket.

Вроде так.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
foma19

цитировать



Зарегистрирован: 05 Окт 2009 20:10:13
Сообщения: 10

СообщениеДобавлено: 06 Окт 2009 18:41:51    Заголовок сообщения: Ответить с цитатой

думаю это вариант. спасибо!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
foma19

цитировать



Зарегистрирован: 05 Окт 2009 20:10:13
Сообщения: 10

СообщениеДобавлено: 07 Ноя 2009 19:55:57    Заголовок сообщения: Ответить с цитатой

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

цитировать



Зарегистрирован: 07 Сен 2008 12:26:43
Сообщения: 15
Откуда: Omsk

СообщениеДобавлено: 07 Ноя 2009 20:17:23    Заголовок сообщения: Ответить с цитатой

Если я правильно понимаю, то Вам нужно для каждого раздела с идентичными модулями создать общий шаблон (layout).
Тогда в контроллере (shop_controller.php) в функции beforeRender указываете
Код:

$this->layout = 'shop';

А в shop.ctp вставляем дерево, допустим как элемент:
Код:

$this->element(tree);
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
foma19

цитировать



Зарегистрирован: 05 Окт 2009 20:10:13
Сообщения: 10

СообщениеДобавлено: 08 Ноя 2009 07:03:45    Заголовок сообщения: Ответить с цитатой

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

цитировать



Зарегистрирован: 07 Сен 2008 12:26:43
Сообщения: 15
Откуда: Omsk

СообщениеДобавлено: 08 Ноя 2009 23:26:58    Заголовок сообщения: Ответить с цитатой

тогда в layout выкручиваемся.

Код:

if($this->params['controller'] == 'shop'){
    $this->element(tree);
}


таких примитивных примеров могу кучу привести.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Гость

цитировать






СообщениеДобавлено: 09 Ноя 2009 12:56:51    Заголовок сообщения: Ответить с цитатой Изменить/удалить это сообщение

например?
Вернуться к началу
foma19

цитировать



Зарегистрирован: 05 Окт 2009 20:10:13
Сообщения: 10

СообщениеДобавлено: 10 Ноя 2009 13:37:24    Заголовок сообщения: Ответить с цитатой

а как можно соединить два модуля в одном? есть категории, товары и корзина. в них уже прописаны связи и т.д. весь код тоже есть. но вот мне нужно это все объединить в одном модуле shop. не писать же все функции, используемые в 3-х модулях в одном shop. как вообще обычно это делают?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Hektor

цитировать



Зарегистрирован: 07 Сен 2008 12:26:43
Сообщения: 15
Откуда: Omsk

СообщениеДобавлено: 12 Ноя 2009 08:33:24    Заголовок сообщения: Ответить с цитатой

Anonymous писал(а):
например?

Один пример я уже привел:
Если весь магазин "стоит" на одном контроллере, то проверяем params['controller'] и, при необходимости, выводим элемент.

По моему же глубокому убеждению всё должно быть оформлено в виде шаблонов под каждый конкретный случай. Один шаблон для множества страниц. В Вашем случае шаблон для конкретного раздела. Тем самым Вы сэкономите на производительности. Представьте себе, что у вас один layout для всех разделов. И он должен "подстроиться" под требования раздела. Если магазин, то вывести категории магазина, если архив статей - то категории архива... А разделив на шаблоны и подшаблоны заставляем движок только обрабатывать конкретный файл меньшим количеством циклов и условий. Это ощутимо при посещаемости сайта в несколько тыс. чел. в сутки.
IMHO
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Имя
Сообщение

Смайлики
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