在我的 Joomla 组件中重现了该问题。通过 URL 传递参数时,传递值中的所有西里尔字符都将被删除。
例如,我需要最后一个参数(id):
http://mysite.ru/index.php?option=com_restapi&view=categories&format=raw&id=31
得到 31
http://mysite.ru/index.php?option=com_restapi&view=photos&format=photo&isThumb=true&id=sashatanya
我得到一个空值
http://mysite.ru/index.php?option=com_restapi&view=photos&format=photo&isThumb=true&id=sashatanya2
得到 2
通过调试,我们设法将搜索范围缩小到其中一个控制器中的这行代码:
$id = $this->input->get('id');
// отладочный код
$id2 = $_GET['id'];
echo "id: $id, id2: $id2";
输出:id:, id2: сашатаня
在这里,输入变量包含一个 JInput 对象,并且 echo 输出显示 $_GET 数组中的参数值就是传递的值。但是,JInput->get 返回一个已经被截断的值。
我需要让用户自己输入这个参数,包括使用西里尔字符。
很可能, JInput->get 不会截断任何内容,而只是返回
INT,尝试明确指定您需要一个字符串:JInput->getString('id');