2016-12-14 107 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