2016-12-14 108 views
0

我正尝试在Laravel上使用BootForm创建窗体。这是PostsController中函数的内容。Laravel无法调用函数

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)上重定向我。控制器中的功能未被调用。 虽然这篇文章没有改变。 问题在于更新功能。我想念它吗? 一些提示或帮助将受到欢迎。

+3

你的问题是什么? –

+0

只是更新了它 – Sharkos

+0

你表单的action属性的值是多少?你能在这里展示你的形式吗? – HKumar

回答

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() !!}

让我知道,如果你面对任何其他问题。

+0

你不需要在'update'函数中'返回'重定向吗? – AntoineB

+0

谢谢!它看起来更好,因为现在我点击更新按钮时出现错误:RouteCollection.php中的MethodNotAllowedHttpException第218行:您可以在主帖子中检查我的路线! – Sharkos

+0

@AntoineB是的,当然... Sry,我错过了...... P – prateekkathal

-1

尝试这样一个名为路线:

Route::resource('news' ['uses' => '[email protected]', 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()是正确的。

+0

其实我可以看到我的帖子... /新闻。我还可以在.../news/[$ id]/edit上看到编辑表单。但是,当我尝试使用此代码进行编辑时,它会失败(并将我直接重定向到localhost:8000)。 – Sharkos

+0

这段代码没有任何意义。您不会为每个动词创建一个控制器,您会为每个模型创建一个控制器,并且您有大量的拼写错误。 – AntoineB