Я использую laravel 5.7 и использую одну форму для вставки и обновления. В действии формы я хочу использовать @yield() для маршрута laravel, чтобы получить идентификатор для обновления. Все в порядке, но я не могу использовать метод @yield(). Вот мой код, проблема только в действии формы.
<form class="form-horizontal" action="{{ url('/todo/@yield('editId')') }}" method="post">
{{csrf_field()}}
@section('editMethod')
@show
<fieldset>
<div class="form-group">
<div class="col-lg-10">
<input type="text" name="title" placeholder="Title" value="@yield('editTitle')" class="form-control">
</div>
</div>
<div class="form-group">
<div class="col-lg-10">
<textarea class="form-control" placeholder="Body" name="body" rows="5" id="textarea">@yield('editBody')</textarea>
<br>
<button type="submit" class="btn btn-success">Submit</button>
</div>
</div>
</fieldset>
</form>
Я также проверил с одинарными и двойными кавычками.
action="/todo/@yield('editid')"
Когда я использую простой этот метод, то после отправки он перенаправляет меня на локальный хост, и страница с ошибкой не найдена. В ларавеле 5.4 это работает. но не в ларавеле 5.7. Будем признательны за любую помощь. Спасибо.
Вот мой edit.blade.php, из которого я использую @section и @yield
@extends('Todo.create')
@section('editId',$item->id)
@section('editTitle',$item->title)
@section('editBody',$item->body)
@section('editMethod')
{{ method_field("PUT") }}
@endsection
Методы редактирования и обновления хранилища контроллера
public function store(Request $request)
{
$todo = new todo;
$this->validate($request,[
'body'=>'required',
'title'=>'required|unique:todos',
]);
$todo->body = $request->body;
$todo->title = $request->title;
$todo->save();
return redirect("todo");
}
public function edit($id)
{
$item = todo::find($id);
return view("Todo.edit",compact('item'));
}
public function update(Request $request, $id)
{
$todo = todo::find($id);
$this->validate($request,[
'body'=>'required',
'title'=>'required',
]);
$todo->body = $request->body;
$todo->title = $request->title;
$todo->save();
return redirect("/todo");
}
@section
и@yield
предназначены для разделов HTML. Не используйте его для простых строковых переменных. Просто передайте сами переменные - person apokryfos   schedule 17.11.2018@yield
в URL-адресе, нет возможности хранить и обновлять с использованием одного и того же URL-адреса, потому что laravel хранит данные, используя методstore
в контроллере, и обновляет данные, используя методыedit
иupdate
. - person Ram Bhandari   schedule 17.11.2018