CakePHP Foreach сортировать с названиями - PullRequest
1 голос
/ 08 мая 2011

Здравствуйте, я начал изучать фреймворк CakePHP. И для начала я хотел написать простую игру.

У меня уже есть пользовательский контроллер (не закончен, но работает: D), и теперь я началнаписать оборудование.Но я застрял в данный момент, я пытаюсь отсортировать foreach по типу (шлем, броня, щит и т. Д.), А теперь выводим таблицу сценариев так:

Id  Owner   Name                    Status  Type    Cost
1    23      Krasnoludzka Salada     B       H       100
2    23      Jakieś spodnie          B       L       10
3    23      Zbroja                  B       A       123

Но я хочу сделать так:

Id  Owner   Name                    Status  Type    Cost
Helmets:
1    23      Krasnoludzka Salada     B       H       100
4    23      Smocza Salada           B       H       100
Legs:
2    23      Jakieś spodnie          B       L       10
Armors:
3    23      Zbroja                  B       A       123

Мой equipments_controller.php:

<?php
class EquipmentsController extends AppController {

    var $name = 'Equipments';
    var $helpers = array('Html', 'Form');

    function index() {
        $this->set('equipments', $this->Equipment->find('all', array('conditions' => array('owner='.$this->Session->read('Auth.User.id'), 'status=\'B\''))));
        //$this->set('equipments', $this->Equipment->find('owner='.$this->Session->read('Auth.User.id')));
    }

    function view ($id = null) {
        $this->Equipment->id = $id;
        $owner = $this->Equipment->read('owner');
        if ($owner['Equipment']['owner']==$this->Session->read('Auth.User.id')) {
            $this->redirect(array('controller' => 'equipments', 'action' => 'index'));
            $this->Session->setFlash('To nie twój przedmiot!');
        } else {
        $this->set('equipment', $this->Equipment->read());
        }
    }

}

И equipments / index.ctp:

<!-- File: /app/views/news/index.ctp  (edit links added) -->
<h1>Plecak</h1>
<table>
    <tr>
        <th>Id</th>
        <th>Owner</th>
        <th>Name</th>
        <th>Status</th>
        <th>Type</th>
        <th>Cost</th>
    </tr>

<!-- Here's where we loop through our $news array, printing out news info -->

<?php foreach ($equipments as $equipment): ?>
    <tr>
        <td><?php echo $equipment['Equipment']['id']; ?></td>
        <td><?php echo $equipment['Equipment']['owner']; ?></td>
        <td><?php echo $equipment['Equipment']['name']; ?></td>
        <td><?php echo $equipment['Equipment']['status'];?></td>
        <td><?php echo $equipment['Equipment']['type']; ?></td>
        <td><?php echo $equipment['Equipment']['cost']; ?></td>
    </tr>
<?php endforeach; ?>

</table>

Кто-нибудь может мне помочь?

Ответы [ 2 ]

1 голос
/ 08 мая 2011

Вы можете добавить опцию 'group' в свой find () ...

$this->set(
  'equipments',
  $this->Equipment->find(
    'all',
    array(
      'conditions' => array(
        'Equipment.owner' => $this->Session->read('Auth.User.id'),
        'Equipment.status' => 'B'
      ),
      'group' => array(
        'Equipment.type'
      ),
      'order' => array(
        'Equipment.type',
        'Equipment.name',
      ),
    )
  )
);

Надеюсь, у вас есть модель для этих типов, и вы можете использовать эту модель вместо этого оборудованиязначения типа, что-то вроде EquipmentType.name будет полезно на ваш взгляд.Если бы у вас это было, то вы могли бы выводить новую строку заголовка каждый раз, когда изменяется EquipmentType.id.

0 голосов
/ 08 мая 2011

Я правильно вас понимаю, вы бы хотели отсортировать таблицу данных по заголовкам в тегах заголовков таблицы.

Если это так, я бы предложил использоватьpaginator для тортаway сгенерирует ссылки в ваших заголовках таблиц, которые будут автоматически сортировать данные, поступающие из БД.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...