2011-07-13 5 views
0

index()のモデルが "hasMany"関係を持つオブジェクトを表示するためにindex()関数を編集しようとしています。CakePHP:index()のページ区切りリストの関連値

これが口いっぱいの場合、つまり、焼き付けられたview()の "view"に表示される "関連値"をindex()の "view"に表示しようとしています。主なオブジェクトの直後のテーブル行。

これを説明するための母国語が不十分な場合は申し訳ありませんが、私のサンプルコードが役立つかもしれません。

view.ctpからスニペットを取り出してindex.ctpのforeachループ内に挿入しようとしましたが、それは動作しませんでした。明らかに私は必要なものの大部分を失っています。

私の主な対象は、 "hasMany" "Statuses"という "Projects"です。私はこれを達成するためにコントローラやモデルで何もしていないし、それはちょうどビューの編集だと思った。

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メソッドを呼び出す必要があります。すべてのレコードに関連データが格納されます。

関連する問題