0

クリックして送信ボタンをクリックしてフィールドセットからデータベースに値を送信しようとすると、次のエラー「Error500:JTableUser :: bind(NULL)」が発生します。

モデルの保存関数は次のようになります。

public function save($data)
    {
        $userId = (!empty($data['id'])) ? $data['id'] : (int) $this->getState('user.id');

        $user = new JUser($userId);

        JTable::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR.DS.'tables');
        $table =& JTable::getInstance('User', 'JTable', array());

        // Unset the username so it does not get overwritten
        unset($data['username']);

        // Unset the block so it does not get overwritten
        unset($data['block']);

        // Unset the sendEmail so it does not get overwritten
        unset($data['sendEmail']);

        // Bind the data.
        if (!$table->bind($data)) {
            $this->setError(JText::sprintf('USERS PROFILE BIND FAILED', $user->getError()));
            return false;
        }

        // Load the users plugin group.
        JPluginHelper::importPlugin('user');

        // Null the user groups so they don't get overwritten
        $user->groups = null;

        // Store the data.
        if (!$table->save()) {
            $this->setError($user->getError());
            return false;
        }

        return $user->id;
    }`

$ dataは正しく入力され、正常に"getInstance('User', 'JTable', array());"機能します。ご清聴ありがとうございました。誰かが私のトラブルを手伝ってくれませんか?

4

1 に答える 1

0

返信が遅れましたが、問題は次のようになっていると思います。

if (!$table->save())

JTable(3.2)のsaveメソッドは、バインドデータを最初のパラメーターとして想定しており、何も取得していないためです。

以前にデータをバインドしたことがあるので、おそらく次のようにします。

if (!$table->store())

http://api.joomla.org/cms-3/classes/JTable.html#method_save

于 2014-01-23T01:57:50.713 に答える