데이터베이스 vod 테이블에는 두 개의 필드가 있습니다:
vod_play:
qq$$$iqiyi$$$sohu$$$youku$$$mgtv
vod_url:
1$http://v.qq.com/x/cover/llws99784lrtpz7/g003189nkf3.html 2$http://v.qq.com/x/cover/llws99784lrtpz7/f0031cijuxc.html $$$http://www.iqiyi.com/v_19rse7ldt0.html 2$http://www.iqiyi.com/v_19rse7mbz0.html $$$http://tv.sohu.com/v/MjAxOTA2MjUvbjYwMDczMDI0MS5zaHRtbA==.html 2$http://tv.sohu.com/v/MjAxOTA2MjUvbjYwMDczMDI0My5zaHRtbA==.html $$$http://v.youku.com/v_show/id_XNDI0Mjg3NDcyOA==.html 2$http://v.youku.com/v_show/id_XNDI0Mjg3NDczMg==.html $$$http://www.mgtv.com/b/330256/5878154.html 2$http://www.mgtv.com/b/330256/5878408.html
그룹으로 표시하고 싶습니다. 형식, qq 해당 qq 및 iqiyi의 재생 주소는 iqiyi의 재생 주소에 해당합니다. . . :
현재 구현된 메서드는 다음과 같습니다.
1. 문자열을 분할하고 이를 배열로 다시 조립하는 새 메서드를 만듭니다.
2. 컨트롤러에서 배열을 뷰에 전달합니다.
public function getPlaylist(){ $datas['vod_play'] = explode('$$$', $this->vod_play); $datas['url'] = explode('$$$', $this->vod_url); $playlist=[]; if (is_array($datas)) { foreach ($datas as $key => $value) { foreach ($value as $k => $v) { $playlist[$k][$key] = $datas[$key][$k]; } } return $playlist; } }
public function actionUpdate($id) { $model = $this->findModel($id); $playlists= $model->getPlaylist(); if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['view', 'id' => $model->vod_id]); } return $this->render('update', [ 'model' => $model, 'playlists'=>$playlists, ]); }
보기 이와 같은 것은 activeform을 사용하여 처리할 수 없으며 html과 php의 혼합 코드도 작성했습니다.