Laravel 路线中未识别路线
Route is not identified in Laravel route
我一直在努力学习laravel,但由于某些原因,在我需要传递诸如id之类的路由参数的情况下,我的路由没有被特别识别。
这是我的 web.php
Route::put('/todos/{$todo}/complete','TodoController@complete')->name('todos.complete');
Route::resource('/todos','TodoController');
这是我调用这条路线的地方
@foreach($todos as $todo)
<li class="flex justify-between p2">
@if($todo->completed)
{{-- <p><del>{{$todo->title}}</del></p> --}}
<p class="line-through">{{$todo->title}}</p>
@else
<p>{{$todo->title}}</p>
@endif
<div>
<a href="{{route('todos.edit',[$todo->id])}}" class="btn btn-primary"><i class="fa fa-edit"></i></a>
@if(!$todo->completed)
<span onclick="event.preventDefault();document.getElementById('form-complete-{{$todo->id}}').submit()" class="btn btn-danger fa fa-check px2" ></span>
<form action="{{route('todos.complete',$todo->id)}}" id="{{'form-complete-'.$todo->id}}" method="post" style="display:none">
@csrf
@method('put')
</form>
@else
<span onclick="event.preventDefault();" class="btn btn-success fa fa-check px2" ></span>
<form action="{{route('todos.complete',$todo->id)}}" method="post" style="display:none">
@csrf
@method('put')
</form>
@endif
</div>
</li>
@endforeach
我的控制器设置如下:
public function complete(Todo $todo){
$todo->update(['completed'=>true]);
return redirect()->back()->with('message','Todo Completed');
}
这是我的路线:
| PUT | todos/{$todo}/complete | todos.complete | App\Http\Controllers\TodoController@complete | web
我在 post 编辑路径中遇到了类似的问题,我也需要传递参数。在那里我简单地使用资源方法解决了。但在这种情况下,因为我必须在控制器中输入自定义函数,所以路由不可用。
我在以下位置遇到 404 未找到错误:
http://127.0.0.1:8000/todos/1/complete
laravel 已经有一段时间了。所以我是新的路由基础知识。请帮帮我
尝试更改:
Route::put('/todos/{$todo}/complete','TodoController@complete')->name('todos.complete');
至:
Route::put('/todos/{todo}/complete','TodoController@complete')->name('todos.complete');
没有{$todo}
的$
路由参数在 URI 中定义为 {var}
而不是 {$var}
:
'/todos/{todo}/complete'
route('todos.complete', ['todo' => $todo->id])
我一直在努力学习laravel,但由于某些原因,在我需要传递诸如id之类的路由参数的情况下,我的路由没有被特别识别。 这是我的 web.php
Route::put('/todos/{$todo}/complete','TodoController@complete')->name('todos.complete');
Route::resource('/todos','TodoController');
这是我调用这条路线的地方
@foreach($todos as $todo)
<li class="flex justify-between p2">
@if($todo->completed)
{{-- <p><del>{{$todo->title}}</del></p> --}}
<p class="line-through">{{$todo->title}}</p>
@else
<p>{{$todo->title}}</p>
@endif
<div>
<a href="{{route('todos.edit',[$todo->id])}}" class="btn btn-primary"><i class="fa fa-edit"></i></a>
@if(!$todo->completed)
<span onclick="event.preventDefault();document.getElementById('form-complete-{{$todo->id}}').submit()" class="btn btn-danger fa fa-check px2" ></span>
<form action="{{route('todos.complete',$todo->id)}}" id="{{'form-complete-'.$todo->id}}" method="post" style="display:none">
@csrf
@method('put')
</form>
@else
<span onclick="event.preventDefault();" class="btn btn-success fa fa-check px2" ></span>
<form action="{{route('todos.complete',$todo->id)}}" method="post" style="display:none">
@csrf
@method('put')
</form>
@endif
</div>
</li>
@endforeach
我的控制器设置如下:
public function complete(Todo $todo){
$todo->update(['completed'=>true]);
return redirect()->back()->with('message','Todo Completed');
}
这是我的路线:
| PUT | todos/{$todo}/complete | todos.complete | App\Http\Controllers\TodoController@complete | web
我在 post 编辑路径中遇到了类似的问题,我也需要传递参数。在那里我简单地使用资源方法解决了。但在这种情况下,因为我必须在控制器中输入自定义函数,所以路由不可用。 我在以下位置遇到 404 未找到错误:
http://127.0.0.1:8000/todos/1/complete
laravel 已经有一段时间了。所以我是新的路由基础知识。请帮帮我
尝试更改:
Route::put('/todos/{$todo}/complete','TodoController@complete')->name('todos.complete');
至:
Route::put('/todos/{todo}/complete','TodoController@complete')->name('todos.complete');
没有{$todo}
的$
路由参数在 URI 中定义为 {var}
而不是 {$var}
:
'/todos/{todo}/complete'
route('todos.complete', ['todo' => $todo->id])