0

$ 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番目のケース(エディション)では実行されません。

4

2 に答える 2

0

これはあなたの問題かもしれません。終わり近くに「$datos['imagenes'];」があります。「$data['imagenes'];」である必要があります。

if (! empty($data)) {
    // Data can be an object, or an array with object + array of images            
    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'];
    }
}
于 2012-12-05T20:58:09.243 に答える
0

問題が解決しました。シンプルすぎました。

ビューの中にありました。私はエコーしようとしていました:

$item['id']

それ以外の

$item->id

項目データは、配列ではなくオブジェクトとして取得されています。警告、通知、またはエラーなしで、静かに問題を引き起こしていました。

とにかく、私はあなたの迅速な助けに感謝します.

于 2012-12-05T22:41:20.177 に答える