2015-05-02 2 views
3

Я использую презентаторы laravel из видео laracasts. В принципе, это не так важно. Я хочу, чтобы форматировать выходные данные, когда я использую Form::model. Так, например, у меня есть ввод номера телефона:Использование презентаторов laravel внутри форм освещения/html

<div class="form-group"> 
    {!! Form::label('phone', 'Phone') !!} 
    {!! Form::text('phone', null, ['class' => 'form-control', 'id' => 'phone']) !!} 
</div> 

В БД я хранить телефон в формате E.164, но когда я вывожу их я хочу, чтобы отобразить их в более удобном для чтения формате. Но получатели данных из Laravel не помогут мне, потому что в моем приложении я хочу использовать e.164. Если я установил аксессуар для атрибута телефона, я не смогу получить e.164 внутри своих классов. Таким образом, вместо аксессуаров я выступаю для пользователей, но это не имеет большого значения. Предположим, я хочу использовать функцию php number_format при выводе атрибутов модели внутри Form::text. Как я могу это сделать?

ответ

1

Нет ничего, что заставило бы вас иметь один к одному аксессуар в полевых отношениях. Таким образом, вы можете создать атрибут форматированного телефона для использования в форме и использовать атрибут телефона непосредственно из своих классов.

public function getFormattedPhoneAttribute() 
{ 
    return // formatted $this->phone 
} 

Если у вас уже есть инструкторы, вы можете использовать их в своей форме вместо использования формы :: model.

<div class="form-group"> 
    {!! Form::label('phone', 'Phone') !!} 
    {!! Form::text('phone', $user->present()->phone, ['class' => 'form-control', 'id' => 'phone']) !!} 
</div> 

Либо один из них должен работать для вас, но я бы рекомендовал вам выбрать один: Accessors или ведущие, а не оба.