2012-04-06 8 views
4

Ich bekomme nicht den Wert aller ausgewählten Checkboxen. Es gibt mir nur den Wert des zuletzt ausgewählten CheckboxcakePHP checkbox multiple select sendet nur den Wert der letzten ausgewählten Checkbox

hier ist der Code

foreach($apps as $app){ 


     echo $this->Form->input('Application.id', array('type'=>'checkbox','multiple' => 'checkbox' , 'id'=>$app['Application']['description'], 'div'=>false,'type'=>'checkbox','value' => $app['Application']['description'],'label'=>$app['Application']['description'])); 



    } 

und übermittle ich die allerletzte Option erhalten, die LASTCHECKBOX ist

object(CakeRequest) { 
    params => array(
     'plugin' => null, 
     'controller' => 'groups', 
     'action' => 'add', 
     'named' => array(), 
     'pass' => array() 
    ) 
    data => array(

     'Application' => array(
      'id' => 'LASTCHECKBOX' 
     ) 

    ) 
    query => array() 
    url => 'groups/add' 
    base => '' 
    webroot => '/' 
    here => '/groups/add' 
} 
+0

Warum die Doppel-Post? http://stackoverflow.com/questions/10049917/cakephp-checkbox-is-showing-extra-hidden-field – mark

+0

@mark Sie sind eigentlich separate Fragen zu einem ähnlichen Thema – icc97

Antwort

1

Ich denke, es liegt daran, "Wert".

in Ihrem Fall verwenden "options" => array(1, 2, 3)

sollte man besser nie eingestellten Wert, default oder so etwas in der Ansicht. Verwenden Sie die Controller-Aktion, um einen Standardwert festzulegen. als es sollte gut funktionieren.

if ($this->request->isPost()) { 

} else { 
    $this->request->data['Model']['fieldname'] = 'defaultvalue'; 
} 
+0

Ich bin verwirrt. Was ist Array (1,2,3,4) ??? – Autolycus

+0

Nun, wenn Sie ein "mehrere" Kontrollkästchen verwenden, dann müssen mehrere Werte zur Auswahl stehen. Daher haben Sie ein Options-Array mit mehreren Einträgen (und niemals einen einzelnen Wert). – mark

1

Für mehrere Kontrollkästchen müssen Sie [] als letzter Teil des Namens HMTL-Attribut haben (siehe diese answer für weitere Erklärung).

Dies geschieht in CakePHP mit dem 'Select'-Typ des Eingangs. Wenn man sich die Form Helper select documentation für 2.0 aussehen (aber gilt für v1.2 + als auch) Sie brauchen nicht auf die Schleife Sie brauchen nur ein mehr wählen mit Kontrollkästchen erstellen:

<?php 
$options = array(
    'Value 1' => 'Label 1', 
    'Value 2' => 'Label 2' 
); 
echo $this->Form->select('Model.field', $options, array(
    'multiple' => 'checkbox' 
)); 
?> 

Also für Sie, ich glaube, Sie brauchen Sie nicht die foreach($apps müssen Sie $ apps in einem ähnlichen Format zu $options zu ändern.

<?php 
$apps = array(
    'App Id 1' => 'Description 1', 
    'App Id 2' => 'Description 2' 
); 
echo $this->Form->select('Application.id', $apps, array(
    'multiple' => 'checkbox' 
)); 
?> 

Sollte ouput:

<div class="input select"> 
    <label for="ApplicationId">Id</label> 
    <input name="data[Application][id]" value="" id="ApplicationId" type="hidden"> 
    <div class="checkbox"> 
     <input name="data[Application][id][]" value="App Id 1" id="ApplicationId1" type="checkbox"> 
     <label for="ApplicationId1">Description 1</label> 
    </div> 
    <div class="checkbox"> 
     <input name="data[Application][id][]" value="App Id 2" id="ApplicationId2" type="checkbox"> 
     <label for="ApplicationId2">Description 2</label> 
    </div> 
</div> 
Verwandte Themen