CakePHP Paginator-›sort(__d( не работает

У меня есть плагин, переведенный с помощью i18n, в index.ctp есть сортировка paginator:

<?php echo $this->Paginator->sort(__d('item', 'item_layout_id')); ?>

Когда я пытаюсь отсортировать столбцы, они не упорядочиваются.

Это URL с i18n:

index/sort:Layout/direction:desc

вместо:

index/sort:item_layout_id/direction:desc

Как решить проблему?


person Dvd74    schedule 07.11.2013    source источник


Ответы (2)


То, как вы используете метод sort помощника paginator, неверно, просто попробуйте так.

<?php $this->Paginator->sort('item_layout_id', __('item')); ?>

or

<?php $this->Paginator->sort('item_layout_id', __d('your_domain_name', 'item')); ?>

Подробнее см. здесь.

person Anil kumar    schedule 07.11.2013
comment
Таким образом это работает ‹?php echo $this-›Paginator-›sort('item_layout_id', __d('survey','item_layout_id')); ?> Благодарность - person Dvd74; 07.11.2013

Вы передаете только один аргумент для сортировки

Функция сортировки:

PaginatorHelper::sort($key, $title = null, $options = array())

Код в вопросе передает имя поля переменной функции сортировки, его можно переписать как:

<?php 
$translated = __d('item', 'item_layout_id');
echo $this->Paginator->sort($translated);

Это будет означать, что если есть перевод для item_layout_id - ссылки сортировки больше не будут работать, так как поле Layout (из вопроса) не существует. Попытка сортировки по несуществующему полю приводит к игнорированию параметра.

Правильное использование

Чтобы перевести заголовок ссылки сортировки - используйте параметр title:

<?php 
echo $this->Paginator->sort(
    'item_layout_id', // Sort by this field
    __d('item', 'item_layout_id') // Display this text
);
person AD7six    schedule 07.11.2013