CakePHP-Fr.Org

Forum francophone du Framework CakePHP

Vous n'êtes pas identifié.

#1 07-06-2018 19:55:48

mbenjemaa
Chouquette
Date d'inscription: 20-08-2014
Messages: 2

cakephp-3.x mettre à jours plusieurs records en changeant leur statut

J'ai une table AssetsAssignations, avec plusieurs centaines de records. Parfois, l'utilisateur a besoin de sélectionner quelques records ensemble, avec un checkbox, et changer leur champs "status" une fois pour tous.

Dans mon controller, j'ai la fonction suivante:

Code: php

  1. public function editMultiple()
  2. {
  3.     $assetStatuses = $this->AssetsAssignations->AssetStatuses->find('list');
  4.     $this->paginate = [
  5.         'contain' => ['Assets', 'AssetStatuses', 'Clients', 'Rooms'],
  6.         'sortWhitelist' => [
  7.             'Assets.model_number',
  8.             'Assets.serial_number',
  9.             'AssetStatuses.name',
  10.             'Clients.last_name',
  11.             'Rooms.name',
  12.             ]
  13.     ];
  14.  
  15.     $assetsAssignations = $this->request->data;
  16.  
  17.     $assetsAssignations_ids = array();
  18.  
  19.     foreach($assetsAssignations as $a){
  20.         $assetsAssignations_ids[$a['id']] = $a['id'];
  21.         $this->AssetsAssignations->updateAll(
  22.  
  23.             array('AssetAssignation.id' => $assetsAssignations_ids)
  24.         );
  25.         $this->Session->setFlash(__('Statsus is updated for the selcted entries!'));
  26.     }            
  27.     debug($assetsAssignations);
  28.  
  29.     $query = $this->AssetsAssignations->find()
  30.         ->contain(['Assets', 'AssetStatuses', 'Clients', 'Rooms']);
  31.     $filter = $this->Filter->prg($query);
  32.     $assetsAssignations = $this->paginate($filter, ['maxLimit' => 10000, 'limit' => 10000]);        
  33.  
  34.     $this->set(compact('assetsAssignations', 'assetStatuses'));
  35.     $this->set('_serialize', ['assetsAssignations']);
  36. }

Dans edit_multiple.ctp, j'utilise javascript pour filtrer les données. Et je mets ce code:

Code: php

  1. <table class="hoverTable dataTable">
  2.         <thead>
  3.                 <tr>
  4.                     <th>Select</th><th>Model Number</th><th>Serial Number</th><th>Room</th><th>Client</th><th>Status</th>
  5.                 </tr>
  6.         </thead>
  7.         </thead>
  8.                     <?php foreach ($assetsAssignations as $assetsAssignation): ?>
  9.                     <tr>
  10.                         <td><input name="data[AssetsAssignations][id][]" value="<?= $assetsAssignation->id ?>" id="AssetsAssignationsId1" type="checkbox"></td>
  11.                         <td><?= $assetsAssignation->has('asset') ? $assetsAssignation->asset->model_number : '' ?></td>
  12.                         <td><?= $assetsAssignation->has('asset') ? $assetsAssignation->asset->serial_number : '' ?></td>
  13.                         <td><?= $assetsAssignation->has('room') ? $assetsAssignation->room->name : '' ?></td>
  14.                         <td><?= $assetsAssignation->has('client') ? $assetsAssignation->client->last_name . ', ' . $assetsAssignation->client->first_name: '' ?></td>
  15.                         <td><?= $assetsAssignation->has('asset_status') ? $assetsAssignation->asset_status->name : '' ?></td>
  16.                     </tr>
  17.                     <?php endforeach; ?>
  18.     </table>
  19.     <legend><?= __('') ?></legend>
  20.     </div>
  21.         <?= $this->Form->create($assetsAssignation) ?>
  22.     <fieldset>
  23.         <div class="row">
  24.             <div class="col-xs-3"><?= $this->Form->input('asset_status_id', ['options' => $assetStatuses, 'empty' => true, 'label' => __('Change Status To')]) ?></div>
  25.         </div>
  26.     </fieldset>
  27.     <?= $this->Form->button(__('Submit')) ?>
  28.     <?= $this->Form->end() ?>

Ma question est: comment passer les IDs des records sélectionnés au bouton "Submit" ?

Merci pour votre aide

Hors ligne

 

Pied de page des forums

Propuls� par FluxBB
Traduction par FluxBB.fr