2012-04-06 4 views
0

Ich versuche, mit der Formular-Dropdown-Funktion für den Codeigniter Formularhelfer zu arbeiten.Formular Dropdown-Funktion

echo form_dropdown('userCharacters', $userRoster, '', '', 'id="userCharacter"'); 

Wenn Sie die $userRoster auffallen, ist das Array ich von der Steuerung zur Ansicht übergeben.

So zeigt es sich, wenn ich eine print_r auf dem Array mache.

Array 
(
[0] => stdClass Object 
    (
     [id] => 1 
     [rosterName] => Kid Wonder 
    ) 

[1] => stdClass Object 
    (
     [id] => 3 
     [rosterName] => Oriel 
    ) 

) 

Allerdings bin ich diese Fehler immer und nicht sicher, warum

A PHP Error was encountered 

Severity: 4096 

Message: Object of class stdClass could not be converted to string 

Filename: helpers/form_helper.php 

Line Number: 352 
A PHP Error was encountered 

Severity: 4096 

Message: Object of class stdClass could not be converted to string 

Filename: helpers/form_helper.php 

Line Number: 352 

EDIT:

Array 
(
[0] => Array 
    (
     [id] => 1 
     [rosterName] => Kid Wonder 
    ) 

[1] => Array 
    (
     [id] => 3 
     [rosterName] => Oriel 
    ) 

) 

EDIT 2: Was nach der Anmeldung des Benutzers geschehen angenommen hat, ist Darin befindet sich die Standardzeichen - ID und die Rollen - ID des Benutzers, der in der userData-Array. Es führt die Bibliotheksfunktion getRosterList aus. Innerhalb dieser Funktion überprüft es, ob der Benutzer eine Rollen-ID von 4 (admin) oder 5 (superadmin) hat und wenn es dann das ist, was ich tun möchte, bekomme ich ALLE Mitglieder des Dienstplans, die ihr Standardzeichen enthalten und es haben als ausgewählte Option. Wenn sie nicht eine dieser beiden Rollen sind, möchte ich nur, dass sie die Mitglieder des Dienstplans, die sie kontrollieren, bekommen und die vorgewählte Option als Standard-Charakter-ID haben. Und wenn sie nur ein Zeichen haben, dann wird anstelle des Dropdowns ein h1-Tag angezeigt.

Controller:

$this->data['userData'] = $this->users->getUserByUserID($this->session->userdata('userID')); 
$this->data['userRoster'] = $this->kowauth->getRosterList($this->data['userData']->usersRolesID); 

Library (kowauth)

* Get roster list 
* 
* @param integer 
* @return object/NULL 
*/ 
function getRosterList($usersRolesID) 
{ 
    // Check args 
    if(!is_numeric($usersRolesID)) { throw new Exception('Non-numeric $usersRolesID provided to getRosterList()'); } 

    if (($usersRolesID == 4) || ($usersRolesID == 5)) 
    { 
     return $this->ci->users->getAllRoster(); 
    } 
    else 
    { 
     return $this->ci->users->getRosterByUserID($this->ci->session->userdata('userID')); 
    } 
} 

Modell:

/** 
* Get roster list 
* 
* @return object/NULL 
*/ 
function getAllRoster() 
{  
    $this->db->select('id'); 
    $this->db->select('rosterName'); 
    $this->db->select('rosterStatusID'); 
    $this->db->from('rosterList'); 
    $this->db->order_by('rosterName'); 
    $query = $this->db->get(); 
    if ($query->num_rows() > 0) 
    { 
     return $query->result(); 
    } 
    return null; 
} 

/** 
* Get list of roster by user ID 
* 
* @return object/NULL 
*/ 
function getRosterByUserID($userID) 
{ 
    // Check args 
    if (!is_numeric($userID)) { throw new Exception('Non-numeric $userID provided to getRosterByUserID()'); } 

    $this->db->select('id'); 
    $this->db->select('rosterName'); 
    $this->db->from('rosterList'); 
    $this->db->where('userID', $userID); 
    $this->db->order_by('rosterName'); 
    $query = $this->db->get(); 
    if ($query->num_rows() > 0) 
    { 
     return $query->result_array(); 
    } 
    return null; 
} 

Ausblick:

<?php 
     echo '<pre>'; 
     print_r($userRoster); 
     echo '</pre>'; 
     if (count($userRoster) == 1) 
     { 
      echo '<h1>'.$userRoster->rosterName.'</h1>'; 
     } 
     else 
     { 
      $options = array (
       $userRoster['id'] => $userRoster->rosterName 
      ); 
      echo form_dropdown('userCharacters', $options, '', 'id="userCharacter"'); 
     } 
     ?> 

Hat jemand Ideen dazu?

Antwort

3

Sie übergeben gerade ein Array von Objekten. Ich glaube, dass Ihre $ userRoster Array sollte wie folgt formatiert werden:

Array 
(
    1 => 'Kid Wonder' 
    3 => 'Oriel' 
) 

Ich glaube auch, dass form_dropdown nur vier Parameter nimmt und Sie versuchen es fünf zu passieren. Vielleicht haben Sie das letzte Argument in die vierte Stelle verschieben möchten:

echo form_dropdown('userCharacters', $userRoster, '', 'id="userCharacter"'); 

produzieren sollte:

<select name="userCharacters" id="userCharacter"> 
<option value="1">Kid Wonder</option> 
<option value="3">Oriel</option> 
</select> 

Was ich denke, ist was du für!

http://codeigniter.com/user_guide/helpers/form_helper.html

+0

Ja, ich mache es vermasseln. –

+0

Ich habe meinen Beitrag aktualisiert. –

+0

@ user1296102 Wenn Sie ein mehrdimensionales Array übergeben, werden optgroups erstellt, aber nicht so, wie Sie es in Ihrer aktualisierten Frage tun (das assoziative Array hat die Schlüssel 'id' und 'rosterName') - CI sucht nicht nach diesen Schlüsseln weiß nicht, was zu tun ist, und selbst wenn dies der Fall wäre, hätten Sie die optgroup-Bezeichnungen '0' und '1', da Sie Integer als Schlüssel für das Top-Level-Array verwenden. Ich denke, Sie wollen einfach ein Array mit einer Dimension übergeben, wie ich oben habe, aber lassen Sie mich wissen, wenn Sie diese optgroups wollen, und ich werde meine Antwort aktualisieren! – rawb

Verwandte Themen