【问题标题】:Laravel giving incompehensible urls leading to "Not found http exception"Laravel 提供难以理解的 url 导致“未找到 http 异常”
【发布时间】:2014-05-28 19:17:39
【问题描述】:

我正在使用 laravel 构建一个博客,并拥有编辑功能和资源丰富的控制器。

这是我的控制器的编辑方法:

public function edit($id)
{
    $post = Post::find($id);
    return View::make('posts.edit')->with('post',$post);
}

还有我的编辑视图:

<div class="containeredit">
{{Form::open(['action'=>'PostsController@update'])}}
{{Form::label('Title: ')}}
{{Form::text('title',$post['title'])}}
{{Form::label('Body: ')}}
{{Form::textarea('body',$post['body'])}}
<br>
{{Form::submit('Add Blog Post',['class'=>'btn btn-primary'])}}
{{Form::close()}}

最后这是我的更新控制器方法

    public function update($id)
{
    $post = Post::find($id);
    $input = Input::all();
    $post->title = $input->title;
    $post->body = $input->body;
    $post->save();
    return "hi";
}

但是当我点击编辑按钮时,我被路由到这个网址:

http://localhost:8000/posts/%7Bposts%7D

这会导致找不到错误, 我该如何解决这个问题?

【问题讨论】:

  • 您是否为表单发布/放置操作设置了路线? Route::put('posts/{id}', 'PostsController@update');
  • 这是由 Jeffrey Way 令人惊叹的 Laravel 4 生成器生成的资源

标签: php database laravel laravel-4 eloquent


【解决方案1】:

更新路由需要一个 id,所以你需要改变

{{Form::open(['action'=>'PostsController@update'])}}

{{Form::open(['action' => ['PostsController@update', $post['id']], 'method' => 'put'])}}

有关它创建的路线的更多信息可以在这里找到:http://laravel.com/docs/controllers#resource-controllers

【讨论】:

  • 仍然得到相同的结果 {{Form::open(['action' => ['PostsController@update', $post['id']]])}}
  • 如果您使用资源控制器,您的路线需要 PUT 或 PATCH 方法,请查看我的答案以获取更新版本。
【解决方案2】:

您想更新现有行,因此您可能想让 laravel 知道该行的 id :)

{{Form::open(['action'=>['PostsController@update', $post->id], 'method' => 'patch'])}}

【讨论】:

  • $id 没有,对于 $post['id'] 的结果,检查底部的东西
  • 检查已编辑,帖子ID必须在那里。同样作为@user ..指出的方法必须设置为 PUT 或 PATCH
猜你喜欢
  • 2020-11-29
  • 1970-01-01
  • 2012-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-04
  • 2017-07-09
相关资源
最近更新 更多