Функция связывания Joomla - PullRequest
0 голосов
/ 03 января 2011

Я пишу пользовательский компонент для своей работы.Я использую привет компонент для его создания.Когда я редактирую и сохраняю форму, я получаю эту ошибку:

Вызов функции-члена bind () для необъекта

Мой код:

function save()
{
    global $option;

    JTable::addIncludePath(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_abc'.DS.'tables');
    $row =& JTable::getInstance('abc', 'Table');
    if(!$row->bind(JRequest::get('post')))
    {
        JError::raiseError(500, $row->getError() );
    }
    $row->message = JRequest::getVar( 'message', '','post', 'string', JREQUEST_ALLOWRAW );

    if(!$row->store()){
        JError::raiseError(500, $row->getError() );
    }

    switch($this->_task)
    {
        case 'apply':
            $msg  = 'Change Saved';
            $link = 'index.php?option='.$option.'&task=edit&cid[]='.$row->id;
            break;
        case 'save':
            $msg  = 'Saved';
            $link = 'index.php?option='.$option;
            break;
        default:
    }
    $this->setRedirect($link, $msg);
}

Проблема в том, что он не может создать экземпляр.

Пожалуйста, дайте мне знать, если кто-нибудь знает решение.

Спасибо.

Ответы [ 3 ]

1 голос
/ 17 июня 2011

Вам поможет следующий код:

function addComment($option)
{
  global $mainframe;
  $row =& JTable::getInstance( 'comment' , 'Table' );
  if (!$row->bind(JRequest::get( 'post')))
  {
    JError::raiseError(500, $row->getError() );
  }

  $row->comment_date = date ( 'Y-m-d H:i:s' );

  $user =& JFactory::getUser();

  if($user->id)
  {
    $row->user_id = $user->id;
  }

  if(!$row->store())
  {
    JError::raiseError(500, $row->getError() );
  }

  $link = JRoute::_( 'index.php?option='.$option.'&id='.$row->id . '&task=view' );
  $mainframe->redirect( $link, 'Comment Added' );

}
1 голос
/ 03 января 2011

Проблема в том, что вы вызываете метод 'bind', которого нет в переменной $ row. Вы определили $ row как: $ row = & JTable :: getInstance ('abc', 'Table'); что означает, что ваша проблема начинается прямо там. Он пытается получить содержимое базы данных, которое не удается. Я предлагаю вам изменить параметры 'abc' и 'Table' на что-то реальное, для меня это выглядит как пример данных.

0 голосов
/ 03 января 2011

Данные для моего имени таблицы должны быть получены jos_abc. Функция сохранения находится в my_componet/controller.php. Имя класса контроллера: XyzController:

class XyzController extends JController {

    function __construct() {
        //Get View
        if(JRequest::getCmd('view') == '') {
            JRequest::setVar('view', 'default');
        }
        $this->item_type = 'Default';
        parent::__construct();
    }

    function save()
    {
        global $option;

        JTable::addIncludePath(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_tripplanner'.DS.'tables');
        $row1 =& JTable::getInstance('xyz', 'jos_abc');
        if(!$row1->bind(JRequest::get('post')))
        {
            JError::raiseError(500, $row->getError() );
        }
        $row->message = JRequest::getVar( 'message', '','post', 'string', JREQUEST_ALLOWRAW );

        if(!$row->store()){
            JError::raiseError(500, $row->getError() );
        }

        switch($this->_task)
        {
            case 'apply':
                $msg  = 'Change Saved';
                $link = 'index.php?option='.$option.'&task=edit&cid[]='.$row->id;
                break;
            case 'save':
                $msg  = 'Saved';
                $link = 'index.php?option='.$option;
                break;
            default:

        }
        $this->setRedirect($link, $msg);
    }
}

Даже тогда я не могу сохранить, я получаю «Вызов функции-члена bind () для необъекта».

...