0

创建了一个视图函数,每当我单击链接查看 a时,页面顶部的 url 是正确的,但它会在数据库中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打印出字段时正确

4

2 回答 2

0

您应该能够自己调试它。只需逐步缩小错误范围即可。

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

  • $accounts

  • $模板

  • $字段

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

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

如果您还没有使用它,我强烈建议您安装 Cake 的调试工具栏 - https://github.com/cakephp/debug_kit/,因为它使调试变量和 SQL 变得更加容易。

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

希望有帮助!

于 2012-08-08T12:29:15.497 回答
0

the issue was I wasn't getting the parameters when click the link

function view($name){

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


}

and the view

<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>
于 2012-08-09T01:51:53.383 回答