Как использовать один и тот же шаблон Blade для добавления и редактирования одного контроллера в Laravel? - PullRequest
2 голосов
/ 15 января 2020

У меня вопрос, я использовал один и тот же шаблон лезвия для создания и вставки. В моем контроллере я создал переменную ModificationMode для функции редактирования и в шаблоне, который использовал isset() метод.

Контроллер

public function edit($id)
{
    $ModificationMode = 0;
    $DataPraticien = \App\Praticien::find($id);

    return view('AjoutePraticien', compact('DataPraticien'))->with('ModificationMode', $ModificationMode);
}

Просмотр

@if(isset($ModificationMode))

<form method="post" action="{{route('prat.update', $DataPraticien ?? '')}}">
@csrf
@method('PATCH')
    @else
    <form action="{{route('prat.store')}}" method="post">
        @endif
//stuff
//stuff

Я делаю каждую переменную необязательной. Это хорошая идея? Может ли этот метод принести мне некоторые проблемы? Как насчет безопасности?

Ответы [ 2 ]

2 голосов
/ 15 января 2020

Здесь я просто объясняю вам небольшой пример того, как вы используете ту же форму для добавления и редактирования. Когда мне нужно к тому же, я делаю это:

// routes.php
Route::get('test', 'TestController@create');
Route::get('test/{id}', 'TestController@edit');

Контроллер. php

// TestController.php
public function create()
{
    return view('form');
}

public function edit($id)
{
    $resource = Resource::find($id);

    return view('form', compact('resource'));
}

Blade-файл

// form.blade.php
<h2>{{ isset($resource) ? 'Edit a Record' : 'Create a new Record' }}</h2>

<form action="{{ isset($resource) ? '/test/' . $resource->id : '/test' }}" method="post">
    <label>Title</label>
    <input type="text" name="title" value="{{ old('title', isset($resource) ? $resource->title : '') }}" />

    <label>Description</label>
    <textarea name="description">{{ old('description', isset($resource) ? $resource->description : '') }}</textarea>

    <button type="submit">{{ isset($resource) ? 'Update' : 'Create' }}</button>
</form>
0 голосов
/ 15 января 2020

Я думаю, что вы правы. Если моя форма проста, то я делаю подобное. Просто переменная $ModificationMode для меня не требуется. что я делаю ...

@if(isset($DataPraticien))

    <form method="post" action="{{route('prat.update', $DataPraticien ?? '')}}">
    @method('PATCH')
@else
    <form action="{{route('prat.store')}}" method="post">
@endif
  @csrf
...