基本的なLaravelの使い方

目的

http://lara/ykato/sample/●●にアクセスすると、自作のページが表示されるようにする。

ルーティングの設定

C:\xampp\htdocs\lara\routes\web.phpをエディタで開く。

以下のコードを追記する。



Route::match( 
		[
			'get', 
			'post',
		], 
		'ykato/sample/{path}', 
		'YKato\SampleController@show'
	)->where( 'path', '[A-Za-z0-9_\-/]+' );

意味は、

  • GETorPOSTメソッドで
  • ykato/sample/●●にアクセスしたとき
  • YKato\SampleControllerコントローラの
  • showメソッドを実行しろ

ということ。

コントローラの生成


cd C:/xampp/htdocs/lara

php artisan make:controller YKato\SampleController


コントローラの編集

C:\xampp\htdocs\lara\app\Http\Controllers\YKato\SampleController.phpをエディタで開く。

show()メソッドを追記する。


<?php

namespace App\Http\Controllers\YKato;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class SampleController extends Controller
{
	
    public function show( string $path )
    {
		return $path;
	}
	
}



ここまでのテスト

http://lara/ykato/sample/from-Kato/_100にアクセスすると、from-Kato/_100と表示されればOK。

ただし、web.php->where( 'path', '[A-Za-z0-9_\-/]+' )を指定しているので、A~Za~z0~9_-/以外の文字は使えないことに注意。

ビューの作成

C:\xampp\htdocs\lara\resources\views\ykato_view\sample.blade.phpを作成し、以下のコードを記述する。



<!doctype html>
<html lang="ja">
	<head>
		<meta charset="UTF-8">
		<title>{{ $title }}</title>
	</head>
	<body>
		<h1>{!! $h1 !!}</h1>
		<main>{!! $main !!}</main>
	</body>
</html>


コントローラの修正

コントローラからビューを呼び出す。

C:\xampp\htdocs\lara\app\Http\Controllers\YKato\SampleController.phpをエディタで開いて、show()メソッドを修正する。



	
    public function show( string $path )
    {
    	$array = [
    		'title'		=>	'タイトル',
    		'h1'		=>	'見出し',
    		'main'		=>	'<p>'.$path.'</p>',
    	];

		return view( 'ykato_view/sample', $array );
	}


http://lara/ykato/sample/from-Kato/_100にアクセスすると、以下のHTMLコードの結果が出力されるとOK。


<!doctype html>
<html lang="ja">
	<head>
		<meta charset="UTF-8">
		<title>タイトル</title>
	</head>
	<body>
		<h1>見出し</h1>
		<main><p>from-Kato/_100</p></main>
	</body>
</html>


POSTメソッドに対応させる

C:\xampp\htdocs\lara\app\Http\Controllers\YKato\SampleController.phpをエディタで開いて、<form>要素を追記する。



	
<!doctype html>
<html lang="ja">
	<head>
		<meta charset="UTF-8">
		<title>{{ strip_tags( $title ) }}</title>
	</head>
	<body>
		<h1>{!! $h1 !!}</h1>
		<main>{!! $main !!}</main>
		
		<form action="#" method="POST">
			{{ csrf_field() }}
			<input 
				name="title" 
				placeholder="title:" 
				value="{!! htmlspecialchars( $title, ENT_QUOTES ) !!}"
				><br>
			<input 
				name="h1" 
				placeholder="h1:" 
				value="{!! htmlspecialchars( $h1, ENT_QUOTES ) !!}"
				><br>
			<textarea 
				name="main" 
				placeholder="main:"
				>{!! htmlspecialchars( $main, ENT_QUOTES ) !!}</textarea><br>
			<button type="submit">送信</button>
		</form>
		
	</body>
</html>



C:\xampp\htdocs\lara\app\Http\Controllers\YKato\SampleController.phpをエディタで開いて、show()メソッドを修正する。



	
    public function show( string $path, Request $request )
    {

    	$array = [
    		'title'		=>	'タイトル',
    		'h1'		=>	'見出し',
    		'main'		=>	'<p>'.$path.'</p>',
    	];
		
		if ( $request->isMethod('POST') ) {
			
			$array[ 'title' ]	= $request->input( 'title',	$array[ 'title' ] );
			$array[ 'h1' ]		= $request->input( 'h1',	$array[ 'h1' ] );
			$array[ 'main' ]	= $request->input( 'main',	$array[ 'main' ] );
						
		}

		return view( 'ykato_view/sample', $array );
	}


http://lara/ykato/sample/sampleにアクセスしてみる。

テキストボックスの内容を変更すると、Webページ自体が変更される。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA