2011-07-13 17 views
0

我试图编辑一个index()函数来显示index()模型与“hasMany”关系的对象。换句话说,我试图将出现在烘焙视图()“视图”中的“相关值”显示在视图的index()“视图”中紧随主对象的表行。CakePHP:索引()的分页列表中的相关值

对不起,如果我缺乏白话更好地解释这一点,但也许我的示例代码将有所帮助。

我试图从view.ctp中取出代码片段并将其插入到index.ctp的foreach循环中,但这并没有奏效。显然我错过了大部分必要的。

我的主要目标是“有很多”“状态”的“项目”。我没有在控制器或模型中做任何事情来实现这一点,并认为它只是视图编辑。

index.ctp:

<?php 
$i = 0; 
foreach ($projects as $project): 
    $class = null; 
    if ($i++ % 2 == 0) { 
     $class = ' class="altrow"'; 
    } 
?> 
<tr<?php echo $class;?>> 
    <td><?php echo $project['Project']['id']; ?>&nbsp;</td> 
    <td><?php echo $project['Project']['name']; ?>&nbsp;</td> 
    <td> 
     <?php echo $this->Html->link($project['Brand']['name'], array('controller' => 'brands', 'action' => 'view', $project['Brand']['id'])); ?> 
    </td> 
    <td> 
     <?php echo $this->Html->link($project['Jobtype']['name'], array('controller' => 'jobtypes', 'action' => 'view', $project['Jobtype']['id'])); ?> 
    </td> 
    <td><?php echo $project['Project']['job_number']; ?>&nbsp;</td> 
    <td><?php echo $project['Project']['created']; ?>&nbsp;</td> 
    <td><?php echo $project['Project']['hours_to_date']; ?>&nbsp;</td> 
    <td><?php echo $project['Project']['number_of_concepts']; ?>&nbsp;</td> 
    <td><?php echo $project['Project']['number_of_resizes']; ?>&nbsp;</td> 
    <td><?php echo $project['Project']['requires_ia']; ?>&nbsp;</td> 
    <td><?php echo $project['Project']['requires_tech']; ?>&nbsp;</td> 
    <td><?php echo $project['Project']['requires_seo']; ?>&nbsp;</td> 
    <td><?php echo $project['Project']['complexity_level']; ?>&nbsp;</td> 
    <td><?php echo $project['Project']['vendor_name']; ?>&nbsp;</td> 
    <td><?php echo $project['Project']['team_members']; ?>&nbsp;</td> 
    <td class="actions"> 
     <?php echo $this->Html->link(__('View', true), array('action' => 'view', $project['Project']['id'])); ?> 
     <?php echo $this->Html->link(__('Edit', true), array('action' => 'edit', $project['Project']['id'])); ?> 
     <?php echo $this->Html->link(__('Delete', true), array('action' => 'delete', $project['Project']['id']), null, sprintf(__('Are you sure you want to delete # %s?', true), $project['Project']['id'])); ?> 
    </td> 
</tr> 
<tr> 
    <td colspan="16"> 
     <div class="related"> 
      <?php if (!empty($project['Status'])):?> 
      <table cellpadding = "0" cellspacing = "0"> 
      <tr> 
       <th><?php __('Id'); ?></th> 
       <th><?php __('User Id'); ?></th> 
       <th><?php __('Project Id'); ?></th> 
       <th><?php __('Created'); ?></th> 
       <th><?php __('Percentage Complete'); ?></th> 
       <th><?php __('Status'); ?></th> 
       <th class="actions"><?php __('Actions');?></th> 
      </tr> 
      <?php 
       $i = 0; 
       foreach ($project['Status'] as $status): 
        $class = null; 
        if ($i++ % 2 == 0) { 
         $class = ' class="altrow"'; 
        } 
       ?> 
       <tr> 
             <?php echo $class;?>> 
        <td><?php echo $status['id'];?></td> 
        <td><?php echo $status['user_id'];?></td> 
        <td><?php echo $status['project_id'];?></td> 
        <td><?php echo $status['created'];?></td> 
        <td><?php echo $status['percentage_complete'];?></td> 
        <td><?php echo $status['status'];?></td> 
        <td class="actions"> 
         <?php echo $this->Html->link(__('View', true), array('controller' => 'statuses', 'action' => 'view', $status['id'])); ?> 
         <?php echo $this->Html->link(__('Edit', true), array('controller' => 'statuses', 'action' => 'edit', $status['id'])); ?> 
         <?php echo $this->Html->link(__('Delete', true), array('controller' => 'statuses', 'action' => 'delete', $status['id']), null, sprintf(__('Are you sure you want to delete # %s?', true), $status['id'])); ?> 
        </td> 
       </tr> 
      <?php endforeach; ?> 
      </table> 
     <?php endif; ?> 
     </div> 
    </td> 
</tr> 

在先进的感谢。任何回应或提示欢迎。

+0

你会得到什么错误信息?并在'ProductsController'中发布'index()'方法的代码。 – lxa

回答

1

,如果你需要每个记录的相关数据

你应该设置

$this->recursive = 1 // or 2; 

,并调用定期PAGINATE方法;现在每个记录都会包含它的相关数据。