Il y a deux champs dans la table vod de la base de données :
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
Je souhaite les afficher en groupes dans le forme, qq correspond L'adresse de lecture de qq et iqiyi correspond à l'adresse de lecture d'iqiyi. . . :
Les méthodes actuellement implémentées sont les suivantes :
1 Créez une nouvelle méthode dans la classe model pour diviser la chaîne et la réassembler dans un tableau ;
2. Dans le contrôleur, passez le tableau à la vue :
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, ]); }
j'aime cela ne peut pas être traité avec activeform, j'ai également écrit un tas de codes mixtes html et php