CakePHP: связанные значения в разбитом на страницы индексе () - PullRequest
0 голосов
/ 13 июля 2011

Я пытаюсь отредактировать функцию index () для отображения объектов, с которыми модель index () имеет отношение "hasMany".

Если это полный рот, другими словами, я пытаюсь использовать "Связанные значения", которые могут появиться в запеченном представлении (), "представление", чтобы появиться в индексе (), "представление" в таблице. строки, следующие непосредственно за основными объектами.

Извините, если мне не хватает родного языка, чтобы объяснить это лучше, но, возможно, мой пример кода поможет.

Я попытался взять фрагмент из view.ctp и вставить его в цикл foreach index.ctp, но это не сработало. Очевидно, мне не хватает большинства того, что необходимо.

Мой главный объект - "Проекты", который имеет "Многие", "Статусы". Я ничего не делаю в контроллере или модели, чтобы добиться этого, и подумал, что это будет просто редактирование вида.

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>

Спасибо заранее. Любые ответы или подсказки приветствуются.

1 Ответ

0 голосов
/ 13 июля 2011

если вам нужны связанные данные каждой записи

, вы должны установить

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

и вызвать метод обычного разбиения на страницы;каждая запись теперь будет содержать связанные данные.

...