0

我正在尝试使用 codeigniter 表单验证库同时以两种不同的语言显示两条不同的行,但它会引发错误:

$this -> form_validation -> set_message('required', 'Warning %s should not be empty! <br /> Dikkat %s alanı boş bırakılmamalıdır.');

有没有办法像这样使用该功能而不会遇到该错误:

A PHP Error was encountered

Severity: Warning

Message: sprintf(): Too few arguments

Filename: libraries/Form_validation.php

Line Number: 525
4

1 回答 1

2

core/libraries/form_validation.php 中第 525 行的 sprintf() 函数只有两个参数。

$message = sprintf($line, $this->_translate_fieldname($row['label']));

第一个参数必须是具有指定插入点的字符串。以下参数(在 sprintf 函数中)必须与插入点的数量相匹配。而codeigniter只使用一个。

来自 Codeigniter 用户指南:http: //ellislab.com/codeigniter/user_guide/libraries/form_validation.html

If you include %s in your error string, it will be replaced with the "human" name you used for your field when you set your rules.

但是,您的问题的解决方案是:

$this->form_validation->set_message('required', 'Warning %1$s should not be empty! <br /> Dikkat %1$s alanı boş bırakılmamalıdır.');

%1$s 表示 sprintf() 中字符串参数之后的第一个参数。在这里的例子中解释得很好:http: //dk1.php.net/sprintf

于 2012-11-19T10:51:47.807 回答