Разница между requestAction и использованием элементов в cakephp? - PullRequest
1 голос
/ 23 февраля 2012

Может ли кто-нибудь еще объяснить мне разницу между вызовом requestAction непосредственно в представлении и использованием элемента?Я вижу, что здесь упоминалось .Есть ли реальные проблемы с производительностью при чрезмерном использовании requestAction?Я использую торт 2.0.6

Ответы [ 2 ]

0 голосов
/ 23 февраля 2012

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

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

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

0 голосов
/ 23 февраля 2012

Элемент предназначен для случаев, когда представление имеет повторяющиеся коды html и php, а 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
...