$ dataという変数から開始します。これは、オブジェクトを含む連想配列であり、出力される値は次のとおりです。
Array
(
[item] => stdClass Object
(
[id] => 1
[tipo] => 0
[idioma] => es
[nombre] => Artículo de prueba
[titulo] => Esto es un artículo de prueba
[alias] => articulo-de-prueba
[texto] => Lorem ipsum etc etc
[url] =>
[video] =>
[fecha_c] => 2012-11-27 10:50:37
[fecha_m] => 2012-11-27 17:00:00
[fecha_p] => 2012-11-28 00:00:00
[destacado] => 0
[status] => 1
)
[imagenes] => Array
(
)
)
このように、その値をフィルタリングして別の配列に割り当てる必要があります。
protected function load_form($data = '') {
$this->load->helper('form');
// If item data have been sent, pass it to the form view to edit it.
// Else display empty form for new item.
if (! empty($data)) {
// Data can be an associative array with an object and another array or just an object
if (array_key_exists('item', $data)) {
$this->_vars['item'] =& $data['item'];
}
else {
$this->_vars['item'] =& $data;
}
if (array_key_exists('imagenes', $data)) {
$this->_vars['imagenes'] = $data['imagenes'];
}
}
$view = $this->load->view(ADMIN_FORMS_PATH . $this->_controller . '_form', $this->_vars, true);
/*DEBUG*/ echo $view; // just for debugging purposes
}
最初の割り当てでは、次のエラーが発生します。
PHPエラーが発生しました重大度:通知メッセージ:未定義のインデックス:アイテムファイル名:core / Admin_Controller.php行番号:205
PHPエラーが発生しました重大度:通知メッセージ:クラスstdClassのオブジェクトをintに変換できませんでしたファイル名:core / Admin_Controller.php行番号:205
アイテムインデックスが存在しないように動作し、存在します。また、オブジェクトを整数に変換しようとします。
なぜそれが起こるのですか、それを修正するにはどうすればよいですか?
編集:
=&の代わりに&=を実行していました。それがエラーの理由です。
とにかく、問題は解決せず、コードは停止しているようです。
EDIT2:
問題を再定義しようとしています。CodeIgniterに関連するものかもしれないので、CodeIgniter関数を含む関数全体を追加しました。
load_form()メソッドは、新しいアイテムを作成するリクエストから呼び出すことができます。この場合、$ dataは空です。または、($ data内の)特定のアイテムを編集するリクエストから呼び出すことができます。最初のケース(作成)では、デバッグ行が実行されますが、2番目のケース(エディション)では実行されません。