Локализация значения массива в CakePHP - PullRequest
0 голосов
/ 10 февраля 2012

Я пытаюсь локализовать существующее приложение 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')`,

И, похоже, ничего не работает. Как я уже сказал, он работает в других областях представления (хотя в качестве значения массива), но я не могу заставить это работать.

Кстати, код до того, как я начал, выглядел так:

 'value'=> 'Enter search string',

Есть идеи?

Спасибо за ваше время.

1 Ответ

1 голос
/ 10 февраля 2012

В CakePHP 1.x функция __() отображает содержимое по умолчанию, тогда как в этом случае вам нужно только сохранить его.Вы можете использовать второй аргумент, чтобы возвращать, а не выводить содержимое, например:

'value' => __('Enter search string', true),

Начиная с CakePHP 2.0 и более, вам больше не нужно это делать, так как он возвращает по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...