codeigniterフォームヘルパーのフォームドロップダウン機能を使用しようとしています。
echo form_dropdown('userCharacters', $userRoster, '', '', 'id="userCharacter"');
$userRoster
がコントローラーからビューに渡す配列であることに気付いた場合。
配列に対してprint_rを実行すると、次のように表示されます。
Array
(
[0] => stdClass Object
(
[id] => 1
[rosterName] => Kid Wonder
)
[1] => stdClass Object
(
[id] => 3
[rosterName] => Oriel
)
)
ただし、これらのエラーが発生し、理由がわかりません
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
編集 :
Array
(
[0] => Array
(
[id] => 1
[rosterName] => Kid Wonder
)
[1] => Array
(
[id] => 3
[rosterName] => Oriel
)
)
編集2: ユーザーがログインした後、デフォルトの文字IDとuserData配列に保持されているユーザーのロールIDが発生するはずです。ライブラリ関数getRosterListを実行します。その関数内で、ユーザーのロールIDが4(admin)または5(superadmin)であるかどうかを確認し、その場合は、デフォルトの文字を含むすべての名簿メンバーを取得して、それを取得します。選択したオプションとして。それらがこれらの2つの役割のいずれでもない場合は、それらが制御する名簿メンバーを取得し、デフォルトの文字IDとして事前に選択されたオプションを使用する必要があります。また、文字が1つしかない場合は、ドロップダウンの代わりにh1タグが表示されます。
コントローラ:
$this->data['userData'] = $this->users->getUserByUserID($this->session->userdata('userID'));
$this->data['userRoster'] = $this->kowauth->getRosterList($this->data['userData']->usersRolesID);
ライブラリ(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'));
}
}
モデル:
/**
* 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;
}
意見:
<?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"');
}
?>
誰かがこれについて何か考えがありますか?