#axiosを使った通信
viewのaxiosを使用してTestsControllerのcreateメソッドに値を渡す。
またTestsControllerのcreateメソッドからviewに値を返し(res.data)viewで受け取っています。
welcome.blade.php
axios
.post('http://localhost/public/test/create', postParam)
.then((res) => {
console.log(res.data);
alert('TestController@createから帰ってきたデータは' + res.data.test);
}).catch((ex) => {
console.log('failed');
});
TestsController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
class TestsController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
Log::info('Showing user profile for user: ');
return view('welcome');
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create(Request $request)
{
Log::info('Showing user profile for user: ');
$data = $request->all();
return $data;
}
}
web.php
Route::get('/test', 'TestsController@index');
Route::get('/test/create', 'TestsController@create');
Route::post('/test/create', 'TestsController@create');
#バリデーション
1.バリデーション定義を作成
StoreBlogPostは適当な名前です。
cmd
php artisan make:request StoreBlogPost
app\Http\Requestsの中に生成される
- ルールの追加
StoreBlogPost
public function rules()
{
// 必須かつ最大文字数10文字
return [
'test' => 'required|max:10',
];
}
参考資料:https://www.slideshare.net/ssuser817ccb/laravel-bladevuejs
- laravel mix
- dockerを使っている場合はlocalとdockerのhttpd.confのdocumentrootは合わせること
pathが合わずにapp.jsなどが読み込まれないこともある