>  기사  >  PHP 프레임워크  >  yii2 애프터세이브 사용법

yii2 애프터세이브 사용법

(*-*)浩
(*-*)浩원래의
2019-11-05 11:48:067634검색

저장 후 yii2는 aftersave 메소드를 호출합니다. aftersave에서는 해당 이벤트 이벤트인 EVENT_AFTER_INSERT 또는 EVENT_AFTER_UPDATE를 트리거하는 작업만 수행됩니다. Yii2

yii2 애프터세이브 사용법

사용자가 제출한 데이터는 Look 테이블에 저장되고, 양식의 add_img 이미지 주소 배열은 각각 Lookmeida 테이블에 저장됩니다. (권장 학습: yii 튜토리얼)

사진을 저장하는 이 추가 기능은 모델의 afterSave 수명 주기 기능을 사용하여 컨트롤러 코드를 변경할 필요가 없으며 자동으로 완료될 수 있습니다. 원칙은 Look Table의 레코드가 저장(또는 수정)된 후 Lookid가 생성되고 이 Lookid와 mediaurl을 Lookmedia 테이블에 저장한다는 것입니다.

  public function afterSave($insert,$changedAttributes)
    {        if (Yii::$app->id=='app-backend'){            //保存图片字段
            $add_imgarr=$this->add_img;            if ($add_imgarr){                foreach (array_filter($add_imgarr) as $mediaurl){
                    $lookmedia=new Lookmedia();
                    $lookmedia->lookid=$this->lookid;
                    $lookmedia->mediaurl=$mediaurl;
                    $lookmedia->type=0;
                    $lookmedia->save();
                }
            }
        }        if (parent::afterSave($insert,$changedAttributes)) {            return true;
        }else return false;
    }

여기서 언급할 점은 세 가지뿐입니다. 이는 몇 가지 함정으로 간주될 수 있습니다.

1) afterSave, $insert 및 $changedAttributes의 매개변수는 고정된 쓰기 방법이므로 반드시 있어야 합니다. 그렇지 않으면 오류가 발생합니다. 보고되었습니다.

2) 함수 내부에서는 로컬 환경에서 이전에 작성한 것이 beforeSave 였고, 에러도 보고되지 않았고, 프로그램은 정상적으로 실행되었으나, 서버에 이식한 후 에러가 보고되어 afterSave 로 변경되었습니다. 정상이 되었습니다.

3) 실제 측정에 따르면 새로운 로직은 상위 함수 외부에 배치되어야 합니다. 그렇지 않으면 실행되지 않습니다. (이미지는 업로드되었지만 Lookmedia 테이블에 기록이 없습니다)

위 내용은 yii2 애프터세이브 사용법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.