Yii 프레임 워 크 사용 Forms 조작 상세 설명

7975 단어 YiiForms
이 글 의 사례 는 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클래스 는nameemail두 명의 공공 구성원 을 포함 하여 사용자 가 입력 한 데 이 터 를 저장 합 니 다.데이터 검증 규칙 의 집합 을 되 돌려 주 는 방법 도 포함 되 어 있다.위 에서 설명 한 인증 규칙 은 다음 과 같 습 니 다.
  • 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보 기 는 출력 을 렌 더 링 하고 폼 과 함께 출력 하 는 것 은 오 류 를 검증 하 는 상세 한 정보 입 니 다.
    보기 만 들 기
    마지막 으로 두 개의 보기 파일entryentry-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.phpbegin()는 각각 폼 의 시작 과 탭 을 렌 더 링 하 는 데 사 용 됩 니 다.이 두 가지 방법 사이 에 입력 상 자 를 만 드 는 방법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 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

    좋은 웹페이지 즐겨찾기