У меня есть элемент для навигации на боковой панели, который вызывается из моего файла layouts/default.ctp, мне нужно получить доступ к некоторым данным о категориях из моего контроллера фотографий. Как мне это сделать?Данные Контроллера доступа от элемента
ответ
Вы можете просто считать ваш layous/default.ctp как обычный шаблон, и положить
<?php echo $this->element('your element'); ?>
, где вам это нужно.
b.t.w, используйте:
$data = $this->requestAction('controller/action');
для доступа к данным
Почему бы вам не только сделать это стандартный торт конвенции для этого?
В контроллере,
$ this-> набор ('категории', $ this-> фотографии-> найти (...));
Будьте осторожны с requestAction, если вы не используете эффективное кэширование, это может действительно замедлить ваше приложение, поскольку он запускает новый цикл запросов каждый раз, когда вы его вызываете.
Ответ Тревиса Лелеу будет стандартным способом делать вещи. Но если вы должны импортировать данные (для переносимости или по любой причине) в элемент, тогда requestAction не подходит.
Поскольку вы не выполняете какую-либо бизнес-логику, которая должна находиться в контроллере, я настоятельно рекомендую вам импортировать и создавать экземпляр класса модели в виде одиночного элемента в свой элемент. Вы можете сделать это, используя ClassRegistry :: init();
$Photo = ClassRegistry::init('Photo');
$Photo->find('all');
Если вам нужно сделать какой-либо дополнительной обработки данных, которые вы должны сделать это в самой либо модели, используя Пирожные afterFind обратный вызов или сделать пользовательский метод в вашей модели Фото:
class Photo extends AppModel {
function customFind() {
$photos = $this->find('all');
foreach ($photos as $photo) {
//processing code here...
}
}
}
Тогда звоните он в своей стихии:
$Photo = ClassRegistry::init('Photo');
$Photo->customFind();
в основном то, что я пытаюсь донести здесь является только ситуация, когда requestAction уместно, где вам нужно сделать что-то вроде Перенаправление ts или с использованием компонентов.
Если вы просто извлекаете и/или управляете данными, то оно принадлежит модели.
Вы можете отправить данные в свой элемент. Например, в вашем default.ctp:
<?php echo $this->element('side_nav', $your_data); ?>
и в вашей side_nav.ctp вы можете обрабатывать эти данные.
- 1. Данные доступа SWIFT от другого контроллера
- 2. Codeigniter - данные контроллера доступа от модели
- 3. Данные контроллера доступа из ViewModel
- 4. Функция контроллера доступа от другого контроллера
- 5. Объекты домена доступа от контроллера
- 6. Метод доступа от другого контроллера
- 7. переменные доступа от другого контроллера
- 8. Модель доступа от контроллера. Angular.js
- 9. Данные модели от контроллера
- 10. KoLite asyncCommand данные элемента доступа
- 11. Модель доступа от контроллера в ember.js
- 12. ChartJS получить данные от контроллера
- 13. Перевести данные, полученные от контроллера
- 14. Как фильтровать данные от контроллера
- 15. Невозможно получить данные от контроллера
- 16. доступа Объем главного контроллера от внутри директивы
- 17. Переменная сущности доступа Symfony от контроллера
- 18. Элемент доступа внутри templateUrl от контроллера - AngularJS
- 19. доступа вычислен свойство от другого контроллера
- 20. доступа статический метод от экземпляра контроллера переменной
- 21. Objective-C - Метод доступа от другого контроллера
- 22. Ошибка доступа от контроллера Web.API и DirectoryInfo
- 23. Директивы AngularJS атрибуты доступа от контроллера
- 24. доступа вне контроллера от шаблона директивы
- 25. Маршрутизатор доступа от контроллера углового стрелка
- 26. Содержимое контроллера массива Ember доступа от другого контроллера
- 27. Emberjs - как метод доступа одного контроллера от другого контроллера»
- 28. Данные плагина доступа от Functions.php
- 29. Недоступные данные доступа от json
- 30. Как данные доступа от sp
Извините, может быть, я должен уточнить. Я использую Php echo $ this-> element ('side_nav'); ?> в моих макетах/default.ctp Мне нужно получить этот элемент в 'elements/side_nav.ctp' для доступа к данным, полученным из контроллера Photos. – trobrock
@ trobrock, вы пытались использовать: «$ data = $ this-> requestAction ('photos/someaction');" для получения данных в элементе? – Young
У меня нет, я попробую. И жаль, что я неправильно прочитал ваш ответ – trobrock