Laravel路由抛出NotFoundHttpException

时间:2017-05-30 18:41:24

标签: php laravel laravel-5.4

我正在寻求帮助。我搜索了其他主题,并且近似地看到了什么问题,但没有成功修复我的代码。 现在问题是:当我尝试提交代码更新时,我有NotFoundHttpException。

这是Controller和我的功能更新

<?php

namespace App\Http\Controllers;

use Request;
use App\Http\Requests;
use App\T_collaborateurs_table;

class testing extends Controller
{
    public function index()
    {
        $user = T_collaborateurs_table::all();
        return view ("read", compact("user"));
    }
    public function create()
    {
        return view("create");
    }

    public function store(Request $Request)
    {
        T_collaborateurs_table::create(Request::all());

        return redirect("index");
    }

    public function show($id)
    {
        $user=T_collaborateurs_table::find($id);
        return view("show", compact("user"));
    }

    public function edit($id)
    {
        $user=T_collaborateurs_table::find($id);
        return view("update", compact("user"));
    }

    public function update(Request $Request, $id)
    {
        $user = T_collaborateurs_table::find($id);
        $user->update(Request::all());

        return redirect("index");
    }
}

现在路线

Route::get("create", "testing@create");
Route::post("store", "testing@store");
Route::get("index", "testing@index");
Route::get("show/{id}", "testing@show");
Route::get("edit/{id}", "testing@edit");
Route::patch("update/{id}", "testing@update");

现在查看update.blade.php

<body>
    {{Form::model($user, ['method'=>'patch', 'action'=>['testing@update',$user->id]])}}

    {{Form::label('Id_TCa', 'ID')}}
    {{Form::text('Id_TCa')}}
    {{Form::label('Collaborateur_TCa', 'collab')}}
    {{Form::text('Collaborateur_TCa')}}
    {{Form::label('Responsable_TCa', 'resp')}}
    {{Form::text('Responsable_TCa')}}

    {{Form::submit("update")}}
    {{Form::close()}}
</body>

Here the route:list

如果我的话语不是很明显,我很抱歉...... 谢谢大家的时间。

3 个答案:

答案 0 :(得分:5)

{{Form::model($user, ['method'=>'PATCH', 'action'=>  ['testing@update',$user->id]])}}

或尝试使用&#39; route&#39;而不是&#39;行动&#39;,使用&#39; route&#39;你只需要在更新路线中进行一些编辑。

Route::patch("update/{id}", array('as' => 'task-update', 'uses'=>'testing@update'));
在您看来

 {{Form::model($user, ['method'=>'PATCH', 'route'=>['task-update',$user->id]])}}

请遵循班级命名惯例。你的班级名称应该是&#39; TestingController&#39;或者&#39;测试&#39;。

答案 1 :(得分:1)

您可以通过添加

来尝试欺骗方法
{{ method_field('PATCH') }}
在表单中

并将表单方法更改为POST

{{ Form::model($user, ['method'=>'POST', 'action'=>['testing@update', $user->id]]) }}

将id添加为隐藏字段

{{ Form::hidden('id', $user->id) }}

的形式访问控制器中的ID
public function update(Request $Request)
{
    $id = Input::get('id');
    $user = T_collaborateurs_table::find($id);
    $user->update(Request::all());

    return redirect("index");
}

还需要相应地修改您的路线

Route::patch("update", "testing@update");

答案 2 :(得分:0)

尝试使用function update

return redirect()->route('index');