如何删除 Codeigniter 中用于 lang() 的自动标签包装。
该手册没有说明任何内容:https ://www.codeigniter.com/user_guide/helpers/language_helper.html
我是否必须自己编写一个函数,或者是否有一种我想念的简单干净的方法?
如何删除 Codeigniter 中用于 lang() 的自动标签包装。
该手册没有说明任何内容:https ://www.codeigniter.com/user_guide/helpers/language_helper.html
我是否必须自己编写一个函数,或者是否有一种我想念的简单干净的方法?
不要写第二个参数。保持空白。
看一下 lang 函数(在: 中找到/system/helpers/language_helper.php
):
function lang($line, $for = '', $attributes = array())
{
$CI =& get_instance();
$line = $CI->lang->line($line);
if ($for !== '')
{
$line = '<label for="'.$for.'"'._stringify_attributes($attributes).'>'.$line.'</label>';
}
return $line;
}
如您所见,它需要 3 个参数。第一个参数是必需的,但后两个是可选的。如果您声明第二个参数,它将返回包装在标签中的语言字符串。
因此,仅说明第一个参数应该使其仅输出语言字符串。
通过阅读您的评论,听起来您最好直接使用语言课程。但是,仅语言类是不够的,您需要根据自己的目的对其进行扩展。为此,您可以在application/core
文件夹中创建一个名为MY_lang.php
.
class MY_Lang extends CI_Lang {
// You want to extend the line function
function line($line = '', $value = '')
{
$line = ($line == '' OR ! isset($this->language[$line])) ? FALSE : $this->language[$line];
// We can assume that if a value is passed it is intended to be inserted into the language string
if($value) {
$line = sprintf($line, $value);
}
// Because killer robots like unicorns!
if ($line === FALSE)
{
log_message('error', 'Could not find the language line "'.$line.'"');
}
return $line ;
}
}
假设您的语言文件有一个像这样的字符串:
$lang['welcome_text'] = "Welcome %s";
然后,您可以通过加载语言类并使用以下代码来使用它:
$name = "foo";
$this->lang->line('welcome_text', $name);
以上是 100% 未经测试的,所以它可能需要一些调整,但它应该给你一个开始的地方。