2012-02-23 1 views
1

Может ли кто-нибудь просветить меня дальше о разнице между вызовом requestAction непосредственно в представлении и использованием элемента? Я вижу, это было упомянуто here. Есть ли реальные проблемы с производительностью с чрезмерной нагрузкой requestAction? Я использую cake 2.0.6Разница между requestAction и использованием элементов в cakephp?

ответ

0

Элемент предназначен для тех случаев, когда View имеет код html и php repeat, requestAction для интеграции плагина, чем большая функциональность. но вы не можете злоупотреблять requestAction.

элемент примера:

echo $this->element("footer", array('var'=> 1)); 
// element footer, raisin in the array var 

Пример requestAction:

echo $this->requestAction('/comments/add/'.$_model.'/'.$_foreignKey, array('return')); 
// plugin comments, function add function 
+0

Привет, del_dan, спасибо за ответ, но я не совсем понимаю ваш ответ. Может быть, если я уточню. У меня есть 1 таблица статей, которую я хочу отобразить в diff. в зависимости от того, какая компания их создала. Прямо сейчас я вызываю requestAction в представлении, потому что создание элемента для каждого списка статей кажется трудоемким. – jezza

+0

В вашем случае лучше обратиться к RequestAction, потому что вы используете функцию в контроллере. –

0

элемент() загружает только элемент; то есть фрагмент представления. Это почти так, как если бы вы скопировали это .ctp в то место, где вы его используете. Единственное различие заключается в том, что вы можете настраивать поведение кэша и передавать выбранные переменные вида по своему усмотрению.

requestAction() выполняет полный запрос внутри торта путем отправки запроса торта с заданными параметрами (например, URL). Здесь вы также можете настроить кеширование, и вы можете выбрать, чтобы отображаемое представление или возвращаемое значение действия contoller возвращали значение requestAction().

IMHO эта функциональность - при правильном использовании - это очень нишевая функция CakePHP, так как вы можете создать сайт по частям. Например. одно действие отображает комментарии, одно действие отображает тело сообщения, одно действие отображает меню, одно действие запрашивает все это и помещает его в один div, одно действие, запрашивающее этот div и помещающее его в макет. Каждый слой можно эффективно кэшировать, и такой дизайн отлично работает с AJAX, где вам всегда нравится загружать только некоторые части страницы, но все они должны загружаться при загрузке первой страницы. Вы даже можете иметь JSON и HTML-представление каждого из них.

+0

Привет, сибибиба, спасибо за информацию. Это был мой план разбить все. Я предполагаю, что я пытаюсь иметь как можно меньше файлов ctp и максимизировать производительность с помощью кеширования и т. Д. Моя забота заключается в том, что, когда сайт попадает в серьезный трафик, этот метод лучше было бы использовать, чем другой. – jezza