[CakePHP3.10] フォームの利用

<body>
	<header class="row">
		<h1><?=$title ?></h1>
	</header>
	<div class="row">
		<table>
			<form method="post" action="/mycakeapp/hello/form">
                                <input type="hidden" name="_csrfToken" value="<?= $this->request->getParam('_csrfToken') ?>">
				<tr><th>name</th><td><input type="text" name="name"></td></tr>
				<tr><th>mail</th><td><input type="text" name="mail"></td></tr>
				<tr><th>age</th><td><input type="number" name="age"></td></tr>
				<tr><th></th><button>Click</button></tr>
			</form>
		</table>
	</div>
</body>
<body>
	<header class="row">
		<h1><?=$title ?></h1>
	</header>
	<div class="row">
		<p><?=$message ?></p>
	</div>
</body>

HelloController

class HelloController extends AppController {

	public function index(){
		$this->viewBuilder()->autoLayout(false);
		$this->set('title', 'Hello!');
	}

	public function form(){
		$this->viewBuilder()->autoLayout(false);
		$name = $this->request->data['name'];
		$mail = $this->request->data['mail'];
		$age = $this->request->data['age'];
		$res = "こんにちは、" . $name . "(" . $age . 
			")さん。メールアドレスは、" . $mail . " ですね?";
		$values = [
			"title" => "Result",
			"message" => $res
		];
		$this->set($values);
	}
}

$this->request->data[“name”] でデータを取り出している

### エスケープ処理

<body>
	<header class="row">
		<h1><?=h($title) ?></h1>
	</header>
	<div class="row">
		<p><?=h($message) ?></p>
	</div>
</body>

### フォームヘルパー

		<table>
			<?=$this->Form->create(null, ["type"=>"post", "url"=>["controller"=>"Hello", "action"=>"index"]])?>
				<input type="hidden" name="_csrfToken" value="<?= $this->request->getParam('_csrfToken') ?>">
				<tr><th>name</th><td><?=$this->Form->text("Form1.name") ?></td></tr>
				<tr><th>mail</th><td><?=$this->Form->text("Form1.mail") ?></td></tr>
				<tr><th>age</th><td><?=$this->Form->text("Form1.age") ?></td></tr>
				<tr><th></th><td><?=$this->Form->submit("送信") ?></td></tr>
			<?=$this->Form->end() ?>
		</table>

Controller

	public function index(){
		$this->viewBuilder()->autoLayout(false);
		$this->set('title', 'Hello!');

		if($this->request->isPost()) {
			$this->set('data', $this->request->data['Form1']);
		} else {
			$this->set('data', []);
		

フォームヘルパーはcontrollerで呼び出さずに利用できる
なるほど