Php/laravel/laravel5/restful
RESTfulなcontrollerを作成
$ php artisan make:controller ArticleController
以下ができる
vi app/Http/Controllers/ArticleController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
class ArticleController extends Controller
{
//
}
vi app/Http/routes.php
Route::resource('article', 'ArticleController');
vi app/Http/Controllers/ArticleController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Article;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class ArticleController extends Controller
{
public function index()
{
return 'index';
}
public function create()
{
return 'create';
}
public function store()
{
return 'store';
}
public function show($id)
{
return 'show' . $id;
}
public function edit($id)
{
return 'edit' . $id;
}
public function update($id)
{
return 'update' . $id;
}
public function destroy($id)
{
return 'destroy' . $id;
}
}
ttp://localhost/article/1でshow1が表示
その他は以下の通り
$ php artisan route:list
+--------+-----------+------------------------+-----------------+------------------------------------------------+------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+------------------------+-----------------+------------------------------------------------+------------+
| | POST | article | article.store | App\Http\Controllers\ArticleController@store | |
| | GET|HEAD | article | article.index | App\Http\Controllers\ArticleController@index | |
| | GET|HEAD | article/create | article.create | App\Http\Controllers\ArticleController@create | |
| | DELETE | article/{article} | article.destroy | App\Http\Controllers\ArticleController@destroy | |
| | PUT|PATCH | article/{article} | article.update | App\Http\Controllers\ArticleController@update | |
| | GET|HEAD | article/{article} | article.show | App\Http\Controllers\ArticleController@show | |
| | GET|HEAD | article/{article}/edit | article.edit | App\Http\Controllers\ArticleController@edit | |
テンプレートdirも作る
mkdir resources/views/article
一覧テンプレート
-ArticleController.php
public function index()
{
$articles = \App\Article::get();
$data = ['articles' => $articles];
return view('articles.index', $data);
}
public function create()
{
return view('fusers.create');
}
public function store(Request $request)
{
$user = \App\Fuser::create();
$user->name = $request->name;
$user->email = $request->email;
$user->save();
return redirect()->to('/fuser');
}
public function show($id)
{
$fuser = \App\Fuser::find($id);
return view('fusers.show')->with('fuser',$fuser);
}
public function edit($id)
{
$fuser = \App\Fuser::find($id);
return view('fusers.edit')->with('fuser',$fuser);
}
public function update(Request $request, $id)
{
$user = \App\Fuser::find($id);
$user->name = $request->name;
$user->email = $request->email;
$user->save();
return redirect()->to('/fuser');
}
public function destroy($id)
{
$user = \App\Fuser::find($id);
$user->delete();
return redirect()->to('/fuser');
}
-articles/index.blade.php
@extends('layouts.app')
@section('content')
<h1>一覧表示
<div class="row">
<div class="col-sm-12">
<a href="/fuser/create" class="btn btn-primary" style="margin:20px;">新規登録</a>
<table class="table table-striped">
@foreach($fusers as $fuser)
<tr>
<td>{{$fuser->id}} <td>{{$fuser->name}} <td>{{$fuser->email}} <td><a href="/fuser/{{$fuser->id}}" class="btn btn-primary btn-sm">詳細</a> <td><a href="/fuser/{{$fuser->id}}/edit" class="btn btn-primary btn-sm">編集</a> <td> <form method="post" action="/fuser/{{$fuser->id}}"> {!! method_field('delete') !!} <input type="hidden" name="_token" value="テンプレート:Csrf token()"> <input type="submit" value="削除" class="btn btn-danger btn-sm btn-destroy"> </form> @endforeach
@endsection
-articles/created.blade.php
@extends('layouts.app')
@section('content')
<h1>新規作成
<div class="row">
<div class="col-sm-12">
<a href="/fusers" class="btn btn-primary" style="margin:20px;">一覧に戻る</a>
<form method="post" action="/fusers/store">
<div class="form-group">
<label>名前</label>
<input type="text" name="name" value="" class="form-control">
<label>Email</label>
<input type="text" name="email" value="" class="form-control">
<input type="hidden" name="_token" value="テンプレート:Csrf token()"> <input type="submit" value="登録" class="btn btn-primary"> </form> @endsection
-articles/edit.blade.php
@extends('layouts.app')
@section('content')
<h1>情報編集
<div class="row">
<div class="col-sm-12">
<a href="/fuser" class="btn btn-primary" style="margin:20px;">一覧に戻る</a>
<form method="post" action="/fuser/update/{{$fuser->id}}">
<label>名前</label>
<input type="text" name="name" value="{{$fuser->name}}" class="form-control">
<div class="form-group">
<label>Email</label>
<input type="text" name="email" value="{{$fuser->email}}" class="form-control">
<input type="hidden" name="_token" value="テンプレート:Csrf token()"> <input type="submit" value="更新" class="btn btn-primary"> </form> @endsection
-articles/show.blade.php
@extends('layouts.app')
@section('content')
<h1>詳細表示
<div class="row">
<div class="col-sm-12">
<a href="/fuser" class="btn btn-primary" style="margin:20px;">一覧に戻る</a>
<table class="table table-striped">
<tr>ID{{$fuser->id}} <tr>名前{{$fuser->name}} <tr>E-Mail{{$fuser->email}}
@endsection
参考
https://laravel.com/docs/5.0/controllers