Yii 프레임 워 크 사용 Forms 조작 상세 설명
모델 생 성
모델 류
EntryForm
는 사용자 에 게 서 요청 한 데 이 터 를 대표 하 는데 이 종 류 는 다음 과 같이models/EntryForm.php
파일 에 저 장 됩 니 다.클래스 자동 로드장 을 참고 하여 클래스 명명 약정 에 대한 더 많은 소 개 를 얻 으 십시오.
<?php
namespace app\models;
use Yii;
use yii\base\Model;
class EntryForm extends Model
{
public $name;
public $email;
public function rules()
{
return [
[['name', 'email'], 'required'],
['email', 'email'],
];
}
}
이 종 류 는 Yii 가 제공 하 는 기본 클래스yii\base\Model를 계승 하 는데 이 기본 클래스 는 보통 데 이 터 를 표시 합 니 다.EntryForm
클래스 는name
과email
두 명의 공공 구성원 을 포함 하여 사용자 가 입력 한 데 이 터 를 저장 합 니 다.데이터 검증 규칙 의 집합 을 되 돌려 주 는 방법 도 포함 되 어 있다.위 에서 설명 한 인증 규칙 은 다음 과 같 습 니 다.rules()
와name
값 은 모두 필수email
의 값 은 이메일 규칙 검증사용자 가 제출 한 데 이 터 를 처리 하 는
email
대상 이 있다 면validate()방법 으로 데이터 검증 을 촉발 할 수 있 습 니 다.데이터 검증 에 실패 하면hasErrors속성 을 ture 로 설정 하고 구체 적 으로 무슨 오류 가 발생 했 는 지 알 고 싶 으 면 호출getErrors합 니 다.
<?php
$model = new EntryForm();
$model->name = 'Qiang';
$model->email = 'bad';
if ($model->validate()) {
// !
} else {
// !
// $model->getErrors()
}
생 성 동작새 모델 을 만 들 려 면
EntryForm
컨트롤 러 에site
작업 을 해 야 합 니 다.작업 의 생 성과 사용 은안녕하세요소절 에서 설명 되 었 습 니 다.
<?php
namespace app\controllers;
use Yii;
use yii\web\Controller;
use app\models\EntryForm;
class SiteController extends Controller
{
// ... ...
public function actionEntry()
{
$model = new EntryForm;
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
// $model
// ...
return $this->render('entry-confirm', ['model' => $model]);
} else {
//
return $this->render('entry', ['model' => $model]);
}
}
}
이 조작 은 먼저entry
대상 을 만 들 었 다.그리고EntryForm
에서 사용자 가 제출 한 데 이 터 를 수집 하고 Yiiyii\web\Request::post()방법 으로 수집 하려 고 합 니 다.모델 이 데 이 터 를 채 우 는 데 성공 하면(즉,사용자 가 HTML 폼 을 제출 했다 는 것)사용자 가 제출 한 유효한 데 이 터 를 확보 하기 위해 호출validate()합 니 다.정보:표현 식
$_POST
대표활용 단어 참조인 스 턴 스 는 전역 적 으로 접근 할 수 있 는 단일 예 입 니 다.또한서비스 포 지 셔 닝 머 신,Yii::$app
,request
,response
등 특정 기능 을 제공 할 수 있 는 구성 요소 이기 도 하 다.위의 코드 에 서 는db
구성 요 소 를 사용 하여 응용 인 스 턴 스 에서 받 은request
데 이 터 를 방문 합 니 다.사용자 가 폼 을 제출 하면 작업 은 사용자 가 입력 한 데 이 터 를 확인 하기 위해
$_POST
라 는 보 기 를 렌 더 링 합 니 다.폼 을 작성 하지 않 으 면 제출 하거나 데이터 에 오류 가 포함 되 어 있 습 니 다(번역자:예 를 들 어 email 형식 이 잘못 되 었 습 니 다).entry-confirm
보 기 는 출력 을 렌 더 링 하고 폼 과 함께 출력 하 는 것 은 오 류 를 검증 하 는 상세 한 정보 입 니 다.보기 만 들 기
마지막 으로 두 개의 보기 파일
entry
과entry-confirm
을 만 듭 니 다.그들 은 방금 만 든entry
작업 에 의 해 렌 더 링 될 것 이다.entry
보 기 는 제출 한 name 과 email 데 이 터 를 간단하게 표시 합 니 다.보기 파일 은entry-confirm
에 저장 해 야 합 니 다.
<?php
use yii\helpers\Html;
?>
<p>You have entered the following information:</p>
<ul>
<li><label>Name</label>: <?= Html::encode($model->name) ?></li>
<li><label>Email</label>: <?= Html::encode($model->email) ?></li>
</ul>
views/site/entry-confirm.php
보기 에 HTML 폼 이 표 시 됩 니 다.보기 파일 은entry
에 저장 해 야 합 니 다.
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
?>
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'name') ?>
<?= $form->field($model, 'email') ?>
<div class="form-group">
<?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
보 기 는 HTML 폼 을 만 들 기 위해 강력 한 기능작은 부품ActiveForm을 사용 합 니 다.그 중views/site/entry.php
과begin()
는 각각 폼 의 시작 과 탭 을 렌 더 링 하 는 데 사 용 됩 니 다.이 두 가지 방법 사이 에 입력 상 자 를 만 드 는 방법field()을 사용 했다.첫 번 째 입력 상 자 는"name"에 사용 되 고 두 번 째 입력 상 자 는"email"에 사 용 됩 니 다.이후yii\helpers\Html::submitButton()방법 으로 제출 단 추 를 생 성 합 니 다.브 라 우 저 로 아래 URL 에 접근 하여 작업 할 수 있 는 지 확인 합 니 다.
http://hostname/index.php?r=site/entry
데 이 터 는 클 라 이언 트 JavaScript 스 크 립 트 에 의 해 검 증 된 다음 에 야 서버 에 PHP 를 통 해 검 증 됩 니 다.yii\widgets\ActiveForm모델 에서 설명 한 인증 규칙 을 클 라 이언 트 자 바스 크 립 트 스 크 립 트 로 바 꾸 어 검증 할 만큼 스마트 합 니 다.사용자 브 라 우 저가 자 바스 크 립 트 를 사용 하지 않 으 면 서버 측은
end()
방법 에서 처럼 데 이 터 를 한 번 검증 합 니 다.이것 은 어떠한 상황 에서 도 사용자 가 제출 한 데이터 가 유효 하 다 는 것 을 보장 한다.경고:클 라 이언 트 인증 은 사용자 체험 을 향상 시 키 는 수단 입 니 다.정상적으로 사용 되 든 안 되 든 서버 인증 은 필수 입 니 다.무시 하지 마 십시오.
입력 상자 의 텍스트 라벨 은
EntryForm
방법 으로 생 성 되 었 으 며,내용 은 모델 에서 이 데이터 의 속성 명 입 니 다.예 를 들 어 모델 중의actionEntry()
속성 이 생 성 된 라벨 은 바로field()
이다.보기 에서 탭 을 사용자 정의 할 수 있 습 니 다.다음 방법 을 누 르 십시오.
<?= $form->field($model, 'name')->label(' Name') ?>
<?= $form->field($model, 'email')->label(' Email') ?>
정보:Yii 는 복잡 하고 동적 인 보 기 를 만 드 는 데 상당히 많은 유사 한 위 젯 을 제공 합 니 다.뒤에서 너 는 자신 이 작은 부품 을 쓰 는 것 이 얼마나 간단 한 지 알 게 될 것 이다.당신 은 재 활용 을 높이 고 개발 효율 을 높이 기 위해 많은 보기 코드 를 작은 부품 으로 바 꿀 수 있 습 니 다.Yii 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 고 는 Yii 프레임 워 크 를 기반 으로 한 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Yii2 삭제 확인 대화 상자를 괄호로 설정합니다.가까스로 처음부터 부트스트랩이었는데, 삭제 확인 등에 사용된 그 OS 표준 대화 상자인 JSconfirm()도 더 멋있고 싶었다.그래서 Bootbox는 그것을 다시 쓴다. 프레임에서 찾아낸yii.js에 이렇게 쓰여 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.