Joomla 4中RSForm!Pro预填充用户手机号的查询脚本问题
Joomla RSForm!Pro预填充Event Booking用户手机号解决方案
我在Joomla网站的RSForm!Pro表单中,需要预填充已注册用户在Ossolution Team开发的Event Booking扩展里填写的信息。RSForm!Pro支持表单加载时通过脚本预填充字段,我已实现可正常获取用户姓氏的脚本:
$user = JFactory::getUser(); $db = JFactory::getDbo(); $userId = $user->get('id'); // 用户是否已登录? if ($userId) { // 从数据库获取值 $db->setQuery("SELECT `last_name` FROM `#__eb_registrants` WHERE `user_id`='".$userId."'"); return $db->loadResult(); }
该脚本可正常工作,因为用户姓氏存储在#__eb_registrants表中,表内的user_id是Joomla核心分配的用户ID,可直接匹配登录用户。
接下来我尝试预填充用户手机号,手机号存储在#__eb_field_values表中,对应field_id为17,但编写的脚本无法返回结果:
$user = JFactory::getUser(); $db = JFactory::getDbo(); $userId = $user->get('id'); // 用户是否已登录? if ($userId) { // 从数据库获取值 $db->setQuery("SELECT * FROM `#__eb_field_values` WHERE `registrant_id`='" . $userId . "' AND `field_id` = '17'"); return $db->loadResult(); }
排查后发现问题:#__eb_field_values表使用的是Event Booking分配的registrant_id,而非Joomla核心的user_id。因此需要先通过user_id在#__eb_registrants表中找到对应的registrant_id,再用该ID从#__eb_field_values表获取手机号。
最终可用的脚本如下:
$user = JFactory::getUser(); $db = JFactory::getDbo(); $userId = $user->get('id'); // 用户是否已登录? if ($userId) { // 从数据库获取值 $db->setQuery("SELECT field_value FROM #__eb_registrants AS R JOIN #__eb_field_values AS FV ON R.id = FV.registrant_id WHERE R.user_id = " . $userId . " AND FV.field_id = '17'"); return $db->loadResult(); }
内容的提问来源于stack exchange,提问作者FirstClassSteve
相关产品推荐
相关产品推荐

