2015-10-22 2 views
0

Я пытаюсь использовать только одну форму для своих форм создания и обновления. Это простая форма, с которой я использую только HTML. Не коллекция FORM. Однако я не уверен в наилучшей настройке для этого. Потому что в моей форме редактирования у меня есть значения, вызванные в форме модели Eloquent, которая находится внутри переменной. Мне также необходимо использовать метод old для извлечения старого ввода. Будет ли проще использовать коллекцию FORM? Или есть ли чистый способ достичь этого без него?Повторное использование и создание форм Laravel 5.1

Моя форма парциальное:

<form role="form" method="POST" action="{{ action('\Modules\Pages\Http\Controllers\[email protected]', ['id' => $page->id]) }}" class="uk-form"> 
    @include('pages::cms.partials.form.error') 
    @include('pages::cms.partials.form.form') 
</form> 

Относящиеся элемент формы для создания:

<input type="text" placeholder="URL" name="url" value="{{ old('url') }}"> 

Родственный элемент формы для обновления

<input type="text" placeholder="URL" name="url" disabled value="{{ $page->slug }}"> 

Итак, в основном я пытаюсь найти лучший способ их комбинирования. Если я просто попытаюсь добавить $page->slug, он будет работать в форме обновления, но не в форме создания, потому что переменная не существует, поскольку она только вызывается из метода getUpdate.

+0

Почему вы не хотите использовать пакет laravelcollective Form? Вам запрещено это делать? Потому что я решил аналогичную проблему с пакетом форм laravelcollective. –

+0

Мне не запрещено это делать. Если бы я использовал его, как я мог бы достичь результатов, которые я хочу? – Lynx

ответ

0

Это способ, которым я решил эту проблему, используя laravelcollectiveForm пакет:

Проверьте, если модель присутствует - Примечания: Вы можете использовать другое имя переменного, чем $model. Если он присутствует, используйте метод Form::model(), поэтому входы формы заполняются свойствами модели (или старыми входами, если вы отправили форму и столкнулись с ошибками проверки).

@if (isset($model)) 
    {!! Form::model($model, ['route' => ['my.update.route', $model->id], 'method' => 'put']) !!} 
@else 
    {!! Form::open(['route' => 'my.store.route']) !!} 
@endif 

Таким образом, в вашем контроллере, вы можете сделать: return view('my.input.view'); без прохождения данных, если вы хотите к create и return view('my.input.view', compact('model));, если вы хотите сделать update.

Конечно, вам нужно будет использовать методы ввода Form: {!! Form::text('property_name') !!} и т. Д., Чтобы население работало.

Это действительно хорошо. Он даже заполняет связанные модели до тех пор, пока они загружаются: {!! Form::text('related_model[related_model_property]') !!}

Смежные вопросы