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?
Ja, ich mache es vermasseln. –
Ich habe meinen Beitrag aktualisiert. –
@ 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