2017-12-02 5 views
0

フォームを別のWebstieに投稿し、同時にデータベースを更新したいと思っていました。Laravelがコントローラからフォームを送信していますか?

私はどのようにリンクしますか?

form.blade.php

<form action="{{route('formpost')}}" method="post"> 
    <input type="text" name="user_id" value=""> 
    <input type="text" name="item_name" value=""> 
    <input type="text" name="first_name"> 

    <input type="submit" value="Submit"> 
</form> 

formController.php

コントローラを使用するが道であり、唯一のPHPを使用して(その場合、私はそれ以降のラインの下の検証を追加することができ必要か)、それとも別の方法がありますか?

+1

フォームをあなたのウェブサイトに投稿してから外部サイトにリクエストを送信し、回答を得てデータベースを更新したいですか? – lagbox

答えて

1

を提出あなたはLaravelで外部のHTTPリクエストを実行するためにがつがつ食うライブラリを使用することができます。あなたは作曲家を使ってそれをインストールすることができます。

composer require guzzlehttp/guzzle 

は、HTTPリクエストを送信するには、この操作を行うことができます。

$client = new GuzzleHttp\Client(); 

$response = $client->request('POST', 'http://httpbin.org/post', [ 
    'form_params' => [ 
     'field_name' => 'abc', 
     'other_field' => '123', 
     'nested_field' => [ 
      'nested' => 'hello' 
     ] 
    ] 
]); 

詳しい情報は、彼らのマニュアルを参照してください。

1

このコマンドでコントローラリソースを使用することをお勧めします。 php artisan make:コントローラwhateverController --resource

これは、フォームの作成、編集、保存に必要な機能を備えたコントローラを作成します。これはあなたのルートリストで呼び出すことができます。

あなたのフォームアクションでは、{{route( 'formpost')}}の代わりに{{route( 'formpost @ store')}}のようにフォーム情報を保存します。あなたの種類のフォームを使用している場合は、このトークンをフォームに追加することを忘れないでください。そうしないと、エラーが発生します。

<form method="POST" action="/profile"> 
 
    {{ csrf_field() }} 
 
    ... 
 
</form>

あなたは私はあなたが別のサイトにあなたのものではなくデータを送信する必要があると考えていlaravel controller resource

+0

はい、私は実際に{{csrf_field()}}を追加します...、web.phpルーティングはすでにコントローラの呼び出しを処理しています..そして、それは[email protected]を呼び出します – Tera

+1

'formpost.store' :)次の質問をスキップするだけです – lagbox

0

のようなものを使用しなければならないではJavaScriptを使用して簡単に行うことができ、フォーム上のAJAX要求を渡すことでイベント

+0

両方のリクエストのこのメソッドをサイト内に使用するか、cUrlまたはfile_get_contents()関数を使用してください –

関連する問題