我在使用模块的参数执行任何特定操作时遇到问题。我不断从我的代码中收到以下错误:
PHP Fatal error: Call to a member function get() on a non-object
此错误发生在以下文件的第 10 行:
<?php
echo($params)
class modSystemValidation {
function buildForm() {
$form = '';
$tabIndex = 0;
if($params->get('includeGender','0') == 1 ) {
$form .= '<div id="gender"><input type="radio" name="gender" id="gender_m" value="m" tabindex="' . $tabIndex . '" class="label" /><label for="gender_m">Male</label><input type="radio" name="gender" id="gender_f" value="f" tabindex="' . $tabIndex + 1 . '" /><label for="gender_f"></label></div>';
$tabIndex++;
$tabIndex++;
}
}
return $form
}
modSystemValidation::buildForm();
?>
我已经能够得出结论,这就是 params 对带有 echo($params) 的页面的回声:
{"includeFirstName":"1","includeLastName":"1","includeEmail":"1","includePhone":"0","includeAddress1":"0","includeAddress2":"0","includeZip":"0","includeCity":"0","includeState":"0","includeGender":"0","validateFirstName":"0","validateLastName":"0","validateEmail":"0","validatePhone":"0","validateAddress1":"0","validateAddress2":"0","validateZip":"0","validateCity":"0","validateState":"0","validateGender":"0"}
我认为我的问题是 $params 变量是一个数组而不是一个对象,但我似乎很难用 is_array() 和 is_object() 函数确认这一点。
在有人回答这个问题之前,这里有一个快速概述:
- 我知道 $params 已定义
- 我的问题是我需要一种方法来查看 $params 并根据其内容做一些事情。
- 虽然我很感激在为 Joomla 标准正确构建我的代码方面的帮助,但我想推迟这个问题,直到我解决了这个问题。
任何帮助将不胜感激,我只是试图访问我的模块的参数并根据用户是否启用该特定字段来构建表单值。现在我知道,使用当前代码,性别字段不会放在页面上,这是意料之中的。我要解决的是为什么我在第 10 行使用 get 函数收到错误。$params 可以在课堂外呼应,但不能在课堂内呼应?这对我来说没有意义,似乎是我遇到问题的地方。