Cakephp请求操作给了我一个永无止境的请求循环

时间:2011-05-23 12:49:51

标签: php cakephp element

我有一个带有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 个答案:

答案 0 :(得分:2)

问题是你正在使用RequestAction!不惜一切代价避免它。您应该在计划模型中创建一个基本上返回您正在执行的查询内容的方法,例如

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

然后在您的操作中,只需执行$this->set('plans', $this->Plan->getByUserId($userId));

答案 1 :(得分:2)

配置文件/计划视图的第一段代码是什么?如果是这样,您将获得无限循环,因为视图再次调用profile / plans操作,返回到视图中的同一点,依此类推。

根据代码判断,我认为你对元素的工作方式存在一些误解。您需要在需要插入元素时使用requestAction,而不是在元素本身内部。

(我同意Dunhamzzz应该避免requestAction,但有时候这是不可能的。你应该考虑在这种情况下使用实际元素是否有用。)