无法在Laravel上调用函数

时间:2016-12-14 12:45:51

标签: php laravel

我正在尝试使用Laravel上的BootForm创建表单。这是PostsController中函数的内容。

 public function update($id,$request)
{
    //
    $post =findOrFail($id);
    $post->update($request->all());
    redirect(route('news'));
}

该视图是以下代码:

    @extends ('layouts.app')

@section ('content')

    <h1>Edit</h1>

    {!! BootForm::openHorizontal (['url' => 'user', 'sm' => [2, 5], 'lg' => [2, 5], 'method'=> 'put']) !!}

    {!! BootForm::text('Titre', $post->title) !!}

    {!! BootForm::text('Slug', $post->slug) !!}

    {!! BootForm::textarea('Contenu', $post->content) !!}

    <p> <a class="btn btn-primary" href="{{route('news.update', $post) }}">Editer</a></p>

    {!! BootForm::close() !!}

@stop

还有我正在使用这条路线的路线:

Route::resource('news', 'PostsController');

因此,当我点击按钮时,它会将我重定向到主目录(localhost:8000)。不调用控制器中的功能。 虽然没有注意到帖子的变化。 问题在于更新功能。我错过了什么吗? 欢迎提供一些提示或帮助。

2 个答案:

答案 0 :(得分:1)

请用

替换您的功能
public function update($id)
{
  $post = Post::findOrFail($id);

  $post->update(request()->all());

  return redirect(route('news.index'));
}

请用此替换您的观点。

@extends('layouts.app')

@section('content')

  <h1>Edit</h1>

  <?php $formOptions = [
    'url' => 'user',
    'sm' => [2, 5],
    'lg' => [2, 5],
    'method'=> 'put'
  ]; ?>

  {!! BootForm::openHorizontal($formOptions)->action(route('news.update', $post)) !!}
  <input type="hidden" name="_method" value="PUT">
  {!! BootForm::text('Titre', $post->title) !!}
  {!! BootForm::text('Slug', $post->slug) !!}
  {!! BootForm::textarea('Contenu', $post->content) !!}
  {!! BootForm::submit('Editer') !!}
  {!! BootForm::close() !!}

@stop

我不确定url在选项中做了什么,但我仍然添加了它,因为你还有...而不是使用<a href="....">...</a>,我使用{!! BootForm::submit() !!} < / p>

如果您遇到任何其他问题,请告诉我。

答案 1 :(得分:-1)

尝试像这样的命名路线:

Route::resource('news' ['uses' => 'UpdatesController@news', as 'updateNews']);

然后在UpdatesController类中添加如下内容:

namespace App\Http\Controllers;
use App\Http\Controllers\controller;

class UpdateController extends Controller
{
    public news() {
        //your logics for updating here
    }
}
如果http://localhost:8000/news/中的代码正确无误,

news()现在应返回所需的视图。