【问题标题】:Laravel destroy and update methods not workingLaravel 销毁和更新方法不起作用
【发布时间】:2018-09-06 08:19:06
【问题描述】:

尝试使用 Laravel 控制器中的 destroy 方法删除条目。

public function destroy($id)
{
    $university = University::find($id);
    $university->delete();
    return redirect('/universities');
}

这就是我在视图中使用的

{!!Form::open(['action' => ['UniversityController@destroy', $university->Id], 'method' => 'POST'])!!}
{{Form::hidden('_method', 'DELETE')}}
{{Form::submit('Delete', ['class' => 'btn btn-danger'])}}
{!!Form::close()!!}

在按说明激活按钮后没有错误和浏览器重定向,但条目仍保留在视图列表和数据库中。使用 MySQL。

发布到数据库也可以正常工作,但更新方法有同样的问题。没有错误并按我应该的方式被重定向,但没有发生更新。

public function update(Request $request, $id)
{
    $this->validate($request, [
        'Name' => 'required',
        'Country' => 'required'
    ]);

    $university = University::find($id);
    $university->Name = $request->input('Name');
    $university->Country = $request->input('Country');
    $university->save();

    return redirect('/universities');
}

并且在视图中:

{!! Form::open(['action' => ['UniversityController@update', $university->Id], 'method' => 'POST']) !!}
    <div class="form-group">
        {{Form::label('Name', 'Name')}}
        {{Form::text('Name', $university->Name, ['class' => 'form-control', 'placeholder' => 'Name'])}}
    </div>
    <div class="form-group">
            {{Form::label('Country', 'Country')}}
            {{Form::text('Country', $university->Country, ['class' => 'form-control', 'placeholder' => 'Country'])}}
        </div>
        {{Form::hidden('_method', 'PUT')}}
    {{Form::submit('Submit', ['class' =>'btn btn-primary'])}}
{!! Form::close() !!}

还尝试在不使用隐藏表单方法的情况下运行,但结果相同。

我的路线:

Route::get('/universities', 'UniversityController@index');

Route::get('/universities/create', 'UniversityController@create');

Route::get('/universities/{id}/edit', 'UniversityController@edit');

Route::put('/universities/{id}', 'UniversityController@update');

Route::post('/universities/create', 'UniversityController@store');

Route::delete('/universities/{id}', 'UniversityController@destroy');

【问题讨论】:

  • 这是什么版本的 Laravel?
  • 您查看过生成的 HTML 表单吗?可以贴在这里吗?
  • 生成的表单 HTML?
  • 使用版本 5.6.13
  • 您已经发布了 Blade 模板代码。这将生成实际的 HTML。你看到了吗?可以贴吗?

标签: php laravel laravel-5 laravel-5.6


【解决方案1】:

通过设置public $primaryKey = 'Id'解决;在模型中。

【讨论】:

    猜你喜欢
    • 2019-12-23
    • 2021-02-22
    • 1970-01-01
    • 2019-01-26
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 2016-12-07
    相关资源
    最近更新 更多