2016-05-03 24 views
0

Ich versuche, mehrere Werte zu erhalten, um sie in einer Datenbank in CakePHP 3.x speichern, aber ich kann nicht alle Werte, die ich auswählen. Nur einer.Fehler beim Abrufen mehrerer Werte von CakePHP auswählen

Aus meiner Sicht:

<select name="internalDestinations[ids]" id="internalDestinations-ids" multiple="true" class="..."> 
<?php 
    foreach ($users2 as $i): ?> 
     <option value="<?= $i['email'] ?>"> <?= $i['email'] ?> </option> 
    <?php endforeach; 
    ?> 
</select> 

In meinem Controller:

if($this->request->is('post')){ 
    $alarm->internalDestinations=$this->request->data['internalDestinations']['ids']; 
    $this->log($this->request->data['internalDestinations']); 
} 

Und in meinem Eingang mehr als ein Element auswählen, erhalte ich eine gerade:

Array 
(
    [ids] => [email protected] 
) 

Jede Hilfe ? Vielen Dank

Antwort

1

Sie einfach

name="internalDestinations[ids][]" 

tun können, aber warum mit FormHelper nicht?

//first of all let's create an array with email both in the keys and in the values 

$users3 = Cake\Utility\Hash::combine($users2, '{n}.email', '{n}.email'); 

// then let's use cake dotted notation to create arrays 

<?= $this->Form->input('internalDestinations.ids', [ 
     'type' => 'select', 
     'multiple' => true, 
     'options' => $users3 
    ]); ?> 
+1

Ich weiß nicht, was internalDestinations ist, und ich weiß nicht, was Sie versuchen zu erreichen. Ich habe Ihnen gezeigt, wie Sie mehrere Werte übergeben können. Wenn Sie versuchen, zugehörige Modelle zu speichern, werfen Sie einen Blick auf das Handbuch [hier] (http://book.cakephp.org/3.0/en/orm/saving-data.html#saving-associations) und [hier] (http : //book.cakephp.org/3.0/en/views/helpers/form.html#creating-inputs-for-associated-data) – arilia

+0

basic php: verwenden [implode] (http://php.net/manual/ es/function.implode.php) Funktion. Aber lassen Sie mich sagen, dass es eine schlechte Idee ist, kommagetrennte Werte in einem einzigen Feld zu speichern. – arilia