Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 26.07.2014 08:00:52

Алекс

Разные Accessors для разных View

Добрый день!

Accessors — замечательная штука, на мой взгляд. Но как использовать для одного и того же поля разные accessors? Реальный пример: в админке перечень характеристик задается текстовым полем (textarea) через запятую, хранится в базе строкой. Если хочу отредактировать это поле — то просто редактирую эту строку.

Но на публичной странице я хочу работать с этим списком как с массивом. В этом классно помогает Accessor:

public function getFeaturesAttribute($value)
  {
    $arr = explode(',', $value);
    foreach($arr as $k => $v){
      $arr[$k] = trim($v); // здесь было еще немного логики; убрал, чтобы сосредоточиться на главной задаче
    }
    
    return $arr;
  }

Все здорово, на публичной странице во View могу перебирать этот список с помощью foreach. Но в админке то теперь тоже выводится массив, а нужна строка. Есть ли способ задать разные Accessors? Или для одного вызова просто игнорировать Accessors?

Задача конечно решается опять же перебором массива в админке, но решение не элегантное.

#2 26.07.2014 10:22:57

Cheshirrski
masterМастер
Откуда: Днепр
Сообщений: 116
Статей: 2

Re: Разные Accessors для разных View

Определите Accessor для несуществующего поля в таблице и обращайтесь к нему.

Не в сети

#3 26.07.2014 10:31:17

Алекс

Re: Разные Accessors для разных View

Благодарю, такой подход сработал.

Подвал раздела