2017-01-02 4 views
0

Iルートに{スラグ}を送信しようとしています:形態のポストを使用してルートにスラグを送信

ビューで
Route::post('page-edit/{slug}', '[email protected]'); 

私は:

{!! Form::open(array('action' => '[email protected]')) !!} 

コントローラに:

public function postSavePage($slug = null){ 
dd($slug); 
} 

ですがエラーが発生しました:

Missing required parameters for [Route: ] [URI: page-edit/{slug}]. (View: /var/www/html/CMS/resources/views/admin/pages/page-edit.blade.php) 

正しい構文は何ですか?あなたはスラグがoptionalになりたい場合は、あなたが持っている

public function postSavePage($slug = null){ 
    // here's you can define $slug var, for example : 
    $slug = 3; 
    return view('admin.pages.page-edit', compact('slug')); 
} 

答えて

1

:あなたのコントローラで

{!! Form::open(array('action' => '[email protected]', $slug))) !!} 

+0

私のURLは 'http:// localhost:8000/page-edit/strona-2'ですので、スラッグは' strona-2 'でなければなりません。 Form :: open(array( 'action' => array( 'PageController @ postSavePage'、 'slug'))))}} 'ダンプ' dd($ slug); 'の表示: 'slug' – Tomasz

+0

あなたのURLのスラッグになければならない価値を持つ「スラッグ」。 – Jerodev

+0

ありがとう!これは本当にこの問題を解決します:フォームは同じURLに提出 – Tomasz

0

私はあなたにも、ブレードテンプレートに{slug}パラメータを送信不足していると思いますroutes.phpファイルのパラメータ名に疑問符(?)を追加します。

ようなので:あなたはこれを行わない

Route::post('page-edit/{slug?}', '[email protected]'); 

場合は、フォームのURLにスラッグを追加する必要があります。そのような:

{!! Form::open(array('action' => array('[email protected]', 'slug'))) !!} 

更新:

私はあなたがからこのリクエストを送信しているページはあなたが投稿しようとしているものと同じURLであると仮定します。この場合は、フォームのアクションフィールドを空のままにしておくことをお勧めします。これにより、フォームが同じURLに送信されることを確認します。

だから、あなたはこの行うことができます。

{!! Form::open() !!} 
+0

私はフォームに '$のslug'を使用すると、私はエラーがあります:'未定義の変数:スラグ(閲覧:/ var/www/htmlと設定/ CMS /リソース/ビューを/admin/pages/page-edit.blade.php) ' – Tomasz

+0

私の答えを更新しました。私が書いたビューの名前は正しくないかもしれないので、あなたはそれをチェックしなければなりません。あなたは、スラッグを含むvarをビューに渡してからFormに渡す必要があります。これは役に立ちます: –

関連する問題