Laravelのルーティングとコントローラーを試してみる
VagrantでCentOS8を起動
Vagrantfile
Vagrant.configure("2") do |config| config.vm.box = "bento/centos-8.3" config.vm.network "private_network", ip: "192.168.33.10" config.vm.synced_folder ".", "/vagrant", type:"virtualbox" config.vm.provision "shell", inline: <<-SHELL dnf install -y git zip unzip # MariaDBのインストール dnf install -y mariadb-server systemctl enable --now mariadb # PHPのインストール dnf install -y php php-json php-mbstring php-xml php-zip php-pdo php-mysqlnd # Composerのインストール curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer SHELL end
> vagrant up > vagrant ssh
プロジェクトを作成
$ cd /vagrant $ composer create-project laravel/laravel hoge --prefer-dist $ cd hoge
起動
$ php artisan serve --host 0.0.0.0
Laravelの画面が表示できた。
ルーティングの設定
ルーティングの初期状態は下記の通り。
$ cat routes/web.php
<?php use Illuminate\Support\Facades\Route; /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ Route::get('/', function () { return view('welcome'); });
下記の行を追加する。
$ vi routes/web.php
・・・ Route::get('/hello1', function () { return 'Hello, world!'; });
http://192.168.33.10:8000/hello1
にアクセスするとHello, world!が表示される。
今度は、ビューを作って、
$ vi resources/views/hello2.blade.php
<h2>Hello, world!</h2>
ビューを指定。
$ vi routes/web.php
・・・ Route::get('/hello2', function () { return view('hello2'); });
http://192.168.33.10:8000/hello2
にアクセスすると、ビューが表示される。
コントローラーの作成
コントローラーを作成。
$ php artisan make:controller HelloController
下記のファイルが作られる。
$ cat app/Http/Controllers/HelloController.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class HelloController extends Controller { // }
下記のように修正し、
$ vi app/Http/Controllers/HelloController.php
・・・ class HelloController extends Controller { public function index() { return view('hello3'); } }
ビューも作成する。
$ vi resources/views/hello3.blade.php
<h3>Hello, world! 3</h3>
ルートを追加。
$ vi routes/web.php
・・・ Route::get('/hello3', 'HelloController@index');
http://192.168.33.10:8000/hello3
にアクセスすると、コントローラーを経由してビューが表示される。
補足
ちなみに、コントローラを作成する際に「--resource」を付けると
$ php artisan make:controller Hello4Controller --resource
CRUD(生成/読取/更新/削除)に適したコントローラが作成される。
$ cat app/Http/Controllers/Hello4Controller.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class Hello4Controller extends Controller { public function index() { } public function create() { } public function store(Request $request) { } public function show($id) { } public function edit($id) { } public function update(Request $request, $id) { } public function destroy($id) { } } ※長くなるので、コメントを省略しています。
resourceのルートを追加すると、
$ vi routes/web.php ・・・ Route::resource('hello4', 'Hello4Controller');
CRUD用のルートが追加される。
$ php artisan route:list +--------+-----------+----------------------+----------------+-----------------------------------------------+------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+-----------+----------------------+----------------+-----------------------------------------------+------------+ | | GET|HEAD | / | | Closure | web | | | GET|HEAD | api/user | | Closure | api | | | | | | | auth:api | | | GET|HEAD | hello1 | | Closure | web | | | GET|HEAD | hello2 | | Closure | web | | | GET|HEAD | hello3 | | App\Http\Controllers\HelloController@index | web | | | GET|HEAD | hello4 | hello4.index | App\Http\Controllers\Hello4Controller@index | web | | | POST | hello4 | hello4.store | App\Http\Controllers\Hello4Controller@store | web | | | GET|HEAD | hello4/create | hello4.create | App\Http\Controllers\Hello4Controller@create | web | | | GET|HEAD | hello4/{hello4} | hello4.show | App\Http\Controllers\Hello4Controller@show | web | | | PUT|PATCH | hello4/{hello4} | hello4.update | App\Http\Controllers\Hello4Controller@update | web | | | DELETE | hello4/{hello4} | hello4.destroy | App\Http\Controllers\Hello4Controller@destroy | web | | | GET|HEAD | hello4/{hello4}/edit | hello4.edit | App\Http\Controllers\Hello4Controller@edit | web | +--------+-----------+----------------------+----------------+-----------------------------------------------+------------+
続き
Laravelのモデルを試してみる https://yk5656.hatenablog.com/entry/20210103/1612495103