【问题标题】:Laravel's put/patch is not entering into my update method, appears error 404 page not foundLaravel 的 put/patch 没有进入我的更新方法,出现错误 404 page not found
【发布时间】:2018-09-10 04:29:18
【问题描述】:

我真的很想尝试让更新方法工作,但是已经不可能了,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,但它永远不会进入更新方法!!!仅出于测试目的,我的更新方法应返回“Hello World”消息

我得到的只是 Laravel 将我重定向到这个地址

http://localhost:8000/1

在这种情况下取​​决于我的用户 ID 是 1

任何帮助将不胜感激。

非常感谢

【问题讨论】:

  • echo 而不是return
  • 控制器命名错误,保持简单,阅读文档
  • 坏名是什么意思?

标签: php forms laravel patch put


【解决方案1】:

我认为您的路由定义不适用于资源和空字符串。

使用一些字符串来表示给定的资源而不是空字符串,即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">

【讨论】:

    【解决方案2】:
        {{ 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> 
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    • 2020-12-05
    相关资源
    最近更新 更多