Как запустить действие файла контроллера из файла .ctp? - PullRequest
1 голос
/ 06 ноября 2010

Я хочу вызвать действие вместе с файлом .ctp файла контроллера из другого файла .ctp. например,

users_controller.php имеет действие под названием list_category (), и я хочу вызвать его из файла /app/views/pages/index.ctp. Не только вызовите list_category, но и хотите показать его вывод html (я имею в виду также list_category.ctp должен отображаться).

Спасибо.

Ответы [ 5 ]

2 голосов
/ 08 ноября 2010

Создать элемент, например list_category.ctp.

В элементе используйте requestAction для получения данных:

<?php
    $categories = $this->requestAction('/users/list_categories');
?>

<?php foreach($categories as $category): ?>

    <?php // Your display code goes here ?>

<?php endforeach; ?>

В вашем контроллере убедитесь, что вы return данные, которые вы хотите.

<?php
    function list_categories() {

        return $this->User->Category->find('all');

    }
?>

Вы можете повторно использовать код для list_category.ctp просмотра.

При использовании requestAction возникают накладные расходы, но зачастую они на меньше, чем думают люди .

0 голосов
/ 07 ноября 2010

Это можно сделать с помощью requestAction , но имейте в виду, что это дорого, и вы должны быть осторожны с ним.

0 голосов
/ 06 ноября 2010

Кажется, это неправильно, чего вы пытаетесь достичь? Как насчет элементов?

0 голосов
/ 07 ноября 2010

Как насчет вызова контроллера с основного контроллера, а затем передачи его результатов в макет. Наконец, используйте элемент для визуализации вывода, а также используйте элемент для визуализации вывода и на этом другом контроллере. Таким образом, у вас нет дубликатов макетов. Только один элемент, используемый двумя контроллерами.

Это очень похоже на то, как Rails создает свои макеты, когда вы их «запекаете». Он создает эквивалент элемента для использования в макетах добавления и редактирования.

0 голосов
/ 06 ноября 2010

Можете ли вы сделать это с маршрутизацией?Я не уверен в синтаксисе, но я думаю, что вы можете указать метод, который запускается контроллером, когда вы попадаете на эту страницу

...