我正在尝试本地化现有的cakephp应用程序。在大多数情况下,我让它以我想要的方式工作,但有一种情况我无法弄清楚。
我正在使用表单助手创建一个这样的表单:
echo $this->Form->create('search', array('url' =>
array('controller' => '/',
'action' => '/search/searcher'),
'onsubmit'=>'return checkForm();',
'class'=>'find-form'));
echo '<fieldset>';
echo $this->Form->input('name', array(
'type'=>'hidden',
'div'=>false,
'id'=>'name',
'class'=>'nice',
'label'=>false,
'value'=>''
));
echo $this->Form->input('myvalue', array(
'type'=>'text',
'div'=>false,
'id'=>'searchval',
'class'=>'nice',
'value'=> __('Enter search string'),
'label'=>false));
问题出在以下几行:
'value'=> __('Enter search string'),
生成的html如下所示:
...
<fieldset>
<input type="hidden" name="data[search][name]"
id="name" value="" />
Enter Search String
<input name="data[search][myvalue]"
type="text"
id="searchval"
class="nice"
and so on.
“输入搜索字符串”值已正确转换,但它位于输入标记之外,因此显示在搜索框之外。
我尝试了各种代码的排列,如:
'value'=> echo __('Enter search string'),
'value'=> `__('Enter search string')`,
似乎没有任何效果。正如我所说它在视图的其他区域(虽然作为一个数组值)工作,但我不能让这个工作。
BTW,我开始之前的代码看起来像这样:
'value'=> 'Enter search string',
有什么想法吗?
感谢您的时间。
答案 0 :(得分:1)
在CakePHP 1.x中,__()
函数默认回显内容,而在这种情况下,您只想存储它。您可以使用第二个参数返回而不是回显内容,如下所示:
'value' => __('Enter search string', true),
从CakePHP 2.0开始,您不再需要这样做,因为它默认返回。