Laravel 的 put/patch 没有进入我的更新方法,出现错误 404 page not found
Laravel's put/patch is not entering into my update method, appears error 404 page not found
我真的很想尝试更新方法,但这是不可能的,laravel 没有进入方法我已经尝试了所有方法
对于我的家庭控制器,我刚刚使用
生成了资源
php artisan make:controller HomeController --resource
class HomeController extends Controller
{
public function index()
{
}
public function create()
{
//
}
public function store(Request $request)
{
}
public function show($id)
{
//
}
public function edit($id)
{
//
}
public function update(Request $request, $id)
{
return "Hello World";
}
public function destroy($id)
{
//
}
}
这是我的 web.php 文件:
Route::resource(' ', 'HomeController');
这是我的表格
<form action="{{route('update', $user->id)}}" method="POST">
{{ method_field('PUT') }}
{{ csrf_field() }}
<tbody>
<tr>
<td class="col-md-1" scope="row">{{ $user->id }}</td></th>
<td class="col-md-1"><input class="form-control" type="text" name="name" value="{{ $user->name }}" ></td>
<td class="col-md-1"><input class="form-control" type="text" name="phone" value="{{ $user->phone }}" ></td>
<td class="col-md-2"> <input class="form-control" type="text" name="email" value="{{ $user->email }}" ></td>
<td class="col-md-1"><input type="checkbox" {{ $user->hasRole('User') ? 'checked' : '' }} name="role_user"></td>
<td class="col-md-1"><input type="checkbox" {{ $user->hasRole('Agent') ? 'checked' : '' }} name="role_agent"></td>
<td class="col-md-1"><input type="checkbox" {{ $user->hasRole('Admin') ? 'checked' : '' }} name="role_admin"></td>
<td class="col-md-1"><input type="checkbox" {{ $user->user_active ? 'checked' : '' }} name="user_active"></td>
<td class="col-md-1"><button type="submit" value="{{ $user->id }}">Del</button></td>
<td class="col-md-1"><button type="submit" value="{{ $user->id }}">Edit</button></td>
<td class="col-md-1"><button type="submit" >Save</button></td>
</tr>
</tbody>
</table>
</form>
当我点击提交(保存按钮)时,它会将我重定向到本地主机地址和我的用户 ID,但它永远不会进入更新方法!!!仅出于测试目的,我的更新方法应该 return a "Hello World" message
我得到的只是 Laravel 将我重定向到这个地址
取决于我在这种情况下的用户 ID 是 1
如有任何帮助,我们将不胜感激。
非常感谢
{{ Form::open(array('url' => '/', 'method' => 'PUT', 'class'=>'col-md-12')) }}
.... wathever code here
{{ Form::close() }}
也将方法操作更改为 PUT
或
<form class="col-md-12" action="<?php echo URL::to('/');?>/post/<?=$post->postID?>" method="POST">
<!-- Rendered blade HTML form use this hidden. Dont forget to put the form method to POST -->
<input name="_method" type="hidden" value="PUT">
<div class="form-group">
<textarea type="text" class="form-control input-lg" placeholder="Text Here" name="post"><?=$post->post?></textarea>
</div>
<div class="form-group">
<button class="btn btn-primary btn-lg btn-block" type="submit" value="Edit">Edit</button>
</div>
</form>
我认为您的路由定义不适用于资源和空字符串。
而不是空字符串,使用一些字符串来表示给定的资源,即 home
并更新您的路由定义:
https://laravel.com/docs/5.6/controllers#restful-naming-resource-routes
Route::resource('home', 'HomeController')->names([
'update' => 'home.update',
// ...
]);
然后你就可以在你的表单中使用它了:
<form action="{{route('home.update', $user->id)}}" method="POST">
我真的很想尝试更新方法,但这是不可能的,laravel 没有进入方法我已经尝试了所有方法
对于我的家庭控制器,我刚刚使用
生成了资源php artisan make:controller HomeController --resource
class HomeController extends Controller
{
public function index()
{
}
public function create()
{
//
}
public function store(Request $request)
{
}
public function show($id)
{
//
}
public function edit($id)
{
//
}
public function update(Request $request, $id)
{
return "Hello World";
}
public function destroy($id)
{
//
}
}
这是我的 web.php 文件: Route::resource(' ', 'HomeController');
这是我的表格
<form action="{{route('update', $user->id)}}" method="POST">
{{ method_field('PUT') }}
{{ csrf_field() }}
<tbody>
<tr>
<td class="col-md-1" scope="row">{{ $user->id }}</td></th>
<td class="col-md-1"><input class="form-control" type="text" name="name" value="{{ $user->name }}" ></td>
<td class="col-md-1"><input class="form-control" type="text" name="phone" value="{{ $user->phone }}" ></td>
<td class="col-md-2"> <input class="form-control" type="text" name="email" value="{{ $user->email }}" ></td>
<td class="col-md-1"><input type="checkbox" {{ $user->hasRole('User') ? 'checked' : '' }} name="role_user"></td>
<td class="col-md-1"><input type="checkbox" {{ $user->hasRole('Agent') ? 'checked' : '' }} name="role_agent"></td>
<td class="col-md-1"><input type="checkbox" {{ $user->hasRole('Admin') ? 'checked' : '' }} name="role_admin"></td>
<td class="col-md-1"><input type="checkbox" {{ $user->user_active ? 'checked' : '' }} name="user_active"></td>
<td class="col-md-1"><button type="submit" value="{{ $user->id }}">Del</button></td>
<td class="col-md-1"><button type="submit" value="{{ $user->id }}">Edit</button></td>
<td class="col-md-1"><button type="submit" >Save</button></td>
</tr>
</tbody>
</table>
</form>
当我点击提交(保存按钮)时,它会将我重定向到本地主机地址和我的用户 ID,但它永远不会进入更新方法!!!仅出于测试目的,我的更新方法应该 return a "Hello World" message
我得到的只是 Laravel 将我重定向到这个地址
取决于我在这种情况下的用户 ID 是 1
如有任何帮助,我们将不胜感激。
非常感谢
{{ Form::open(array('url' => '/', 'method' => 'PUT', 'class'=>'col-md-12')) }}
.... wathever code here
{{ Form::close() }}
也将方法操作更改为 PUT
或
<form class="col-md-12" action="<?php echo URL::to('/');?>/post/<?=$post->postID?>" method="POST">
<!-- Rendered blade HTML form use this hidden. Dont forget to put the form method to POST -->
<input name="_method" type="hidden" value="PUT">
<div class="form-group">
<textarea type="text" class="form-control input-lg" placeholder="Text Here" name="post"><?=$post->post?></textarea>
</div>
<div class="form-group">
<button class="btn btn-primary btn-lg btn-block" type="submit" value="Edit">Edit</button>
</div>
</form>
我认为您的路由定义不适用于资源和空字符串。
而不是空字符串,使用一些字符串来表示给定的资源,即 home
并更新您的路由定义:
https://laravel.com/docs/5.6/controllers#restful-naming-resource-routes
Route::resource('home', 'HomeController')->names([
'update' => 'home.update',
// ...
]);
然后你就可以在你的表单中使用它了:
<form action="{{route('home.update', $user->id)}}" method="POST">