【发布时间】:2010-08-30 21:15:08
【问题描述】:
我正在使用 CodeIgniter reCAPTCHA 库(here,论坛here)。出于某种原因,没有变量从 reCAPTCHA 库传递到具有 reCAPTCHA 字段代码的视图。
这是我的控制器(相关部分):
$this->load->library('recaptcha');
$this->load->library('form_validation');
$this->lang->load('recaptcha');
// Validate form
...
$this->form_validation->set_rules('recaptcha_response_field','Captcha','required|callback_captcha_check');
我已经尝试将字段视图作为变量加载:
$data['recaptcha'] = $this->load->view('recaptcha',$data,true);
在我的主要观点中:
<?php $this->load->view('recaptcha');?>
查看代码如下:
<script type="text/javascript">
var RecaptchaOptions = {
theme:"<?= $theme ?>",
lang:"<?= $lang ?>"
};
</script>
<script type="text/javascript" src="<?= $server ?>/challenge?k=<?= $key.$errorpart ?>"></script>
<noscript>
<iframe src="<?= $server ?>/noscript?lang=<?= $lang ?>&k=<?= $key.$errorpart ?>" height="300" width="500" frameborder="0"></iframe><br/>
<textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
<input type="hidden" name="recaptcha_response_field" value="manual_challenge"/>
</noscript>
可以通过上面的链接找到该库,但我认为它只是默认 reCAPTCHA PHP 库的包装器。
当我访问注册表单时,页面会加载,但 reCAPTCHA 小部件没有显示,因为它会为每个变量抛出一个错误——所有变量都未定义。
我确信这是将变量从库中加载到视图中的基本内容。有人可以帮我吗?
【问题讨论】:
-
当你将数据传递给视图时 - $this->load->view('recaptcha', $data, true);或 $this->load->view('recaptcha', $data);您之前是否设置过 $data 数组的元素?即 $data['theme'] = 'xyz'; $data['lang'] = '..'; ETC?我在你的代码中没有看到。
-
我不确定如何从库中分配变量。我可以将它们称为常规变量,还是需要以某种方式引用库对象?例如,变量 $lang 是在库中定义的;我可以设置 $data['lang'] = $lang 吗?
-
查看用户指南。 codeigniter.com/user_guide/libraries/language.html 这将向您展示如何从语言类中提取文本。
标签: php javascript codeigniter recaptcha