여러개의 항목 중 하나를 선택하는 선택 상자에 대해 알아보겠습니다. 일반적으로 항목이 적고 한번에 항목을 봐야 할 때는 라디오 버튼을, 선택할 항목이 많다면 선택 상자를 통해 UI를 구성합니다.
우리가 만들 페이지는 아래와 같습니다.
이번 챕터의 코드는 https://github.com/koeunyeon/ci4/tree/view-selectoption에서 찾을 수 있습니다.
View
컨트롤러에 아래의 메소드를 추가합니다.
app/Controllers/View.php
public function selectoption(): string
{
$sports_data = [
"baseball" => "야구",
"soccer" => "축구",
"basketball" => "농구",
];
$selected = $this->request->getPost("sports") ?? "baseball";
return View("/view/selectoption",
[
"sports_data" => $sports_data,
"selected" => $selected
]
);
}
컨트롤러는 라디오 버튼과 완전히 동일합니다. 반환하는 뷰만 다르므로 설명은 생략하겠습니다.
뷰를 추가하겠습니다.
app/Views/view/selectoption.php
<form method="POST">
<select name="sports"> <!-- (1) -->
<?php foreach ($sports_data as $sports_key => $sports_name) : ?>
<option value="<?= $sports_key ?>" <?= $selected == $sports_key ? "selected='selected'" : '' ?> > <!-- (2) -->
<?= $sports_name ?> <!-- (3) -->
</option>
<?php endforeach; ?>
</select> <!-- (4) -->
<p><input type="submit" value="확인"/></p>
</form>
(1) 선택상자를 보여주기 위한 HTML 태그는 select
입니다. 서버로 전달할 "키"를 select
태그에서 선택합니다.
(2) 선택상자의 항목들을 보여주기 위한 태그는 option
입니다. 서버로 전달할 "값"을 value
속성으로 설정합니다.
(3) 사용자에게 보여주는 라벨은 <option>
태그와 </option>
태그 사이에 넣으면 됩니다.
(4) select
태그는 반드시 닫아야 합니다.
브라우저에서 http://localhost:8080/view/selectoption에 접속해 결과를 확인합니다.