Действие запроса Cakephp дает мне бесконечный цикл запроса - PullRequest
0 голосов
/ 23 мая 2011

У меня есть элемент с requestAction, но он дает мне бесконечный цикл запроса.

Например:

Это мой элемент

<?php $plans = $this->requestAction('profile/Plans'); ?>
<?php foreach($plans as $plan): ?>

    <div class="notificationsmall <?php echo $plan['sections']['lable']; ?>">
        <p><b><?php echo $plan['plans']['plan_title']; ?></b></p>
        <p><?php echo $plan['plans']['plan_description']; ?></p>
    </div>  
<?php endforeach;?>

И это функция, которая.Это в "профиле" контроллера

function Plans($id = Null){ 
    $this->set('plans', $this->Plan->Query('SELECT * FROM plans, sections WHERE plans.user_id='.$id.' AND sections.id=plans.section_id'));
}

Понятия не имею, что не так.

Ответы [ 2 ]

2 голосов
/ 23 мая 2011

Является ли первый фрагмент кода представлением профиля / планов? Если это так, вы получаете бесконечный цикл, потому что представление снова вызывает действие профиля / планов, возвращается к той же точке в представлении и т. Д.

Судя по коду, я думаю, у вас есть некоторое недопонимание того, как работают элементы. Вы должны использовать requestAction, когда вам нужно вставить элемент, а не внутри самого элемента.

(Я согласен с Dunhamzzz в том, что requestAction следует избегать, но иногда это невозможно. Вам следует подумать, сработает ли в этом случае использование реальных элементов.)

2 голосов
/ 23 мая 2011

Проблема в том, что вы используете RequestAction!Избегайте этого любой ценой.Вы должны создать метод в своей модели планов, который в основном возвращает содержимое запроса, который вы делаете, например,

function getByUserId($userId) {
    return $this->find('all', array('conditions' => array('Plan.user_id' => $userId)));
}

Затем в вашем действии просто выполните $this->set('plans', $this->Plan->getByUserId($userId));

...