cakephp视图从数据库中打印出相同的值

时间:2012-08-08 01:05:49

标签: cakephp

创建了一个视图函数,每当我点击链接查看template时,页面顶部的网址都是正确的,但它会在数据库中显示相同的fields列表。

字段是

accounts - id, company name, abn
template - id, name, description, account_id
field - id, name, field type, template_id

function view(){

    $accounts=$this->User->AccountsUser->find('list',
    array('fields'=>array('id', 'account_id'),
    'conditions' =>array('user_id' => 
    $this->Auth->user('id'))));

    $templates=$this->Template->find('first', 
    array('conditions' => array(
    'Template.account_id' => $accounts)));

    $fields=$this->Field->find('all', 
    array('conditions' => array(
    'Field.template_id' => Set::extract('/Template/id', $templates))));


    $this->set('template', $templates);
    $this->set('account', $accounts);
    $this->set('field', $fields);


}

这是视图

    <div class = "conlinks">
    </br></br></br></br></br><h2>Here is your template fields</h2></br>
                    <?php foreach($field as $fields): ?>
                    <tr>
                    <td align='center'><?php echo $fields['Field']['name']; ?>
                    </tr></br>
                    <?php endforeach; ?>
</div>

所以问题是它在打印字段时抓取完全相同的字段列表,而不是正确的template_id

2 个答案:

答案 0 :(得分:0)

您应该能够自己调试这个。只需逐步缩小错误。

对于初学者,在视图函数中,对以下变量执行print_r,并确保每个变量都包含逻辑结果:

  • $占

  • $模板

  • $字段

如果你在那里发现了意想不到的结果,我会查看你传递给每个发现的参数,并确保它们没问题。您将$ accounts作为数组传递给查找条件 - 确保它与蛋糕期望的格式匹配。对Set :: extract('/ Template / id',$ templates)执行相同的操作。

另请查看Cake正在生成的SQL。

如果您还没有使用它,我强烈建议您安装Cake的Debug Kit工具栏 - https://github.com/cakephp/debug_kit/,因为它可以更轻松地调试变量和SQL。

如果您执行上述步骤并且无法解决问题,则至少应该能够将其缩小到一行或两行代码。更新您的答案以显示导致问题的一行或两行,并包括您正在使用的某些变量的print_r。这应该有助于StackOverflow上的其他人给你一个特定的答案。

希望有所帮助!

答案 1 :(得分:0)

问题是我在点击链接

时没有获取参数
function view($name){

$fields = $this->Template->Field->find('list',array( 
          'fields'=> array('name'),
          'conditions' => array(
          'template_id'=> $name)));
$this->set('field', $fields);


}

和视图

<div class = "conlinks">
        </br><h2>Here is your template fields</h2>

                        <?php foreach($field as $name): ?>
                        <tr>
                        <td align='center'>
                        <?php echo $name; ?>
                        </tr></br>
                        <?php endforeach; ?>
                        </br>

<?php
echo $this->Html->link('Back', '/templates/view', array('class' => 'button'));?>
    </div>