Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在controller joomla中的另一个表中插入值_Joomla - Fatal编程技术网

如何在controller joomla中的另一个表中插入值

如何在controller joomla中的另一个表中插入值,joomla,Joomla,我正在使用joomla 3.1.1和joomshopping。当用户在网站上注册时,我需要在另一个表中插入值。在用户控制器中,我需要在自定义表中插入值。我可以在控制器文件中使用直接插入查询吗。这是控制器文件中用于注册用户的函数。我可以把我的代码插入到另一个表中 function registersave(){ JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN')); $mainframe = JFactory::g

我正在使用joomla 3.1.1和joomshopping。当用户在网站上注册时,我需要在另一个表中插入值。在用户控制器中,我需要在自定义表中插入值。我可以在控制器文件中使用直接插入查询吗。这是控制器文件中用于注册用户的函数。我可以把我的代码插入到另一个表中

 function registersave(){
    JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
    $mainframe = JFactory::getApplication();
    $jshopConfig = JSFactory::getConfig();
    $config = JFactory::getConfig();
    $db = JFactory::getDBO();
    $params = JComponentHelper::getParams('com_users');
    $lang = JFactory::getLanguage();
    $lang->load('com_users');
    $post = JRequest::get('post');
    JPluginHelper::importPlugin('captcha');
    $dispatcher = JDispatcher::getInstance();
    $res = $dispatcher->trigger('onCheckAnswer',$post['recaptcha_response_field']);

    if(!$res[0]){
        JError::raiseWarning('','Invalid Captcha');
        $this->setRedirect("index.php?option=com_jshopping&controller=user&task=register",'','',$jshopConfig->use_ssl);

    }
    else
    {
        JPluginHelper::importPlugin('jshoppingcheckout');
        $dispatcher = JDispatcher::getInstance();

        if ($params->get('allowUserRegistration')==0){
            JError::raiseError( 403, JText::_('Access Forbidden'));
            return;
        }

        $usergroup = JTable::getInstance('usergroup', 'jshop');
        $default_usergroup = $usergroup->getDefaultUsergroup();
         if (!$_POST["id"]){

    }
        $post['username'] = $post['u_name'];
        $post['password2'] = $post['password_2'];
        //$post['name'] = $post['f_name'].' '.$post['l_name'];

        $post['mailing_list'] = $post['mailing_list'];

        $hear = '';

        $post['where_did_you_purchase'] = $post['where_did_you_purchase'];

        $post['ages_of_your_children'] = $agesofchilderen;
        $post['comments_or_suggestions'] = $post['comments_or_suggestions'];
        $post['vehicle_2'] = $post['vehicle_2_model'].'-'.$post['vehicle_2_year'];

        if ($post['birthday']) $post['birthday'] = getJsDateDB($post['birthday'], $jshopConfig->field_birthday_format);

        $dispatcher->trigger('onBeforeRegister', array(&$post, &$default_usergroup));

        $row = JTable::getInstance('userShop', 'jshop');
        $row->bind($post);
        $row->usergroup_id = $default_usergroup;
        $row->password = $post['password'];
        $row->password2 = $post['password2'];

        if (!$row->check("register")){
            JError::raiseWarning('', $row->getError());
            $this->setRedirect(SEFLink("index.php?option=com_jshopping&controller=user&task=register",1,1, $jshopConfig->use_ssl));
            return 0;
        }


        $user = new JUser;
        $data = array();
        $data['groups'][] = $params->get('new_usertype', 2);
        $data['email'] = JRequest::getVar("email");
        $data['password'] = JRequest::getVar("password");
        $data['password2'] = JRequest::getVar("password_2");
        //$data['name'] = $post['f_name'].' '.$post['l_name'];
        $data['username'] = JRequest::getVar("u_name");
        $useractivation = $params->get('useractivation');
        $sendpassword = $params->get('sendpassword', 1);

        if (($useractivation == 1) || ($useractivation == 2)) {
            jimport('joomla.user.helper');
            $data['activation'] = JApplication::getHash(JUserHelper::genRandomPassword());
            $data['block'] = 1;
        }

        //echo $row->getTableName();

        //print_r($row);

        //die("kkk");

        $user->bind($data);
        $user->save();
        $row->user_id = $user->id;
        unset($row->password);
        unset($row->password2);
        if (!$db->insertObject($row->getTableName(), $row, $row->getKeyName())){
            JError::raiseWarning('', "Error insert in table ".$row->getTableName());
            $this->setRedirect(SEFLink("index.php?option=com_jshopping&controller=user&task=register",1,1,$jshopConfig->use_ssl));
            return 0;
        }







    }
} 
试试这个

请不要编辑Joomla核心文件

如果需要在自定义表中添加注册表数据,请创建
用户插件
。 Joomla提供了很多功能,您可以使用
onUserAfterSave
。事件

创建一个with
onUserAfterSave
事件,然后只需使用库来创建自定义表条目


希望对您有所帮助。

这是joomshopping用户注册文件。有没有其他没有插件的解决方案?在任何购物车注册中,用户将注册到普通Joomla用户表,以便检查触发普通Joomla用户表条目的功能是否与插件使用相同的方法。除了插件之外,没有标准的方法可以做到这一点。您可以编辑核心文件,只需在用户注册成功案例中添加自定义查询。当用户从网站注册时,joomla默认表中没有条目。这里有一个表joomshopping用户。我可以使用model函数然后在controller中调用它吗?通常它应该检查
#u用户
表。您可以使用控制器中的模型函数调用。您可以帮助我如何在控制器中调用模型函数吗。此控制器没有型号。