Перейти к содержимому
Русский язык для Invision Community 5

Как сформировать ссылку на редактирование записи?

Здравствуйте!

 

Не могу понять, в каком момент я ошибаюсь. Вот такой код в шаблоне categoryTable:

 

{{foreach $groups as $group}}
{{$group_find = \IPS\Db::i()->select( '*', 'cms_custom_database_6', array( 'field_32=?', $group->id ) )->first();}}
{$group_find->url('edit')}
{{endforeach}}

Я подглядел как работает шаблон recordRow и там вроде тоже массив rows в row.

 

Получаю ошибку:

 

Call to a member function url() on array

Рекомендованные сообщения

$group_find в вашем случае просто результирующий массив данных из бд. А row там явно не массив, а объект. Если хотите использовать этот метод нужно создать объект класса которым является row, или просто вручную составить ссылку на основе ваших данных, к примеру ...do=edit&id={$group_find["id"]}

  • Автор

Блин, хотел сделать по красоте все, но до ООП наскоком взять не получилось еще. Буду формировать ссылку по старинке. Спасибо!

{{$row = \IPS\Db::i()->select( '*', 'cms_custom_database_6', array( 'field_32=?', $group->id ) )->first();}}
{{$item = \IPS\cms\Records6::constructFromData( $row );}}
{$item->url('edit')}

Только помните, что метод ->first() выбрасывает исключение если результат вернул ноль строк. Если его не перехватить, выполнение скрипта закончится с ошибкой.

  • Автор

Работает идеально! Большое спасибо!

 

А вот про конструкции вроде \IPS\cms\Records6::constructFromData написано в оф. документации для девелоперов?

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.