摘要:下面修改部件,實(shí)現(xiàn)數(shù)據(jù)保存首先需要準(zhǔn)備數(shù)據(jù)變量,給小部件使用接下來就可以修改插件了現(xiàn)在顯示了演員表中的所有演員的名,但是,沒有顯示所有演員的姓。
上節(jié)我們只是建立了小插件,但是數(shù)據(jù)是模擬的,我們希望將數(shù)據(jù)存儲(chǔ)起來,那么我們就需要通過關(guān)聯(lián)表將數(shù)據(jù)與視頻表關(guān)聯(lián)并保存,下面我們打開Builder,創(chuàng)建演員表
【database】
【Models】
【Models】——【Forms】
【Models】——【Lists】
【Models】——【Backend Menu】
【Models】——【Controllers】
【Models】——【Backend Menu】設(shè)置URL
刷新頁面,然后選擇視頻,可以進(jìn)入演員編輯頁面:
添加演員數(shù)據(jù):
因?yàn)槲覀兦捌谑褂昧藃epeater字段存儲(chǔ)演員信息,這次我們將用數(shù)據(jù)庫存儲(chǔ)演員信息。所以需要將演員這個(gè)字段從視頻表中刪除。
下面我們將要建立一個(gè)中間表格作為視頻和演員的中間表實(shí)現(xiàn)多對(duì)多的關(guān)聯(lián)
接下來就需要建立視頻和演員表的多對(duì)多的關(guān)系、
File:pluginsraiseinfomoviesmodelsMovie.php
public $belongsToMany = [ "genres" => [ "RaiseinfoMoviesModelsGenre", // 模型 "table" => "raiseinfo_movies_movies_genres", // 中間表 "order" => "genre_title" ], "actors" => [ "RaiseinfoMoviesModelsActor", // 模型 "table" => "raiseinfo_movies_actors_movies", // 中間表 "order" => "name" ] ];
File:pluginsraiseinfomoviesmodelsActor.php
public $belongsToMany = [ "movies" => [ "RaiseinfoMoviesModelsMovie", // 模型 "table" => "raiseinfo_movies_actors_movies", // 中間表 "order" => "name" ] ];
通過上述的代碼修改,就實(shí)現(xiàn)了Movies和Actors表的多對(duì)多的關(guān)聯(lián)關(guān)系。
下面修改部件,實(shí)現(xiàn)數(shù)據(jù)保存
首先需要準(zhǔn)備數(shù)據(jù)變量,給小部件使用
File:pluginsraiseinfomoviesformwidgetsActorbox.php
public function render() { $this->prepareVars(); dump($this->vars["actors"]); return $this->makePartial("widget"); } public function prepareVars() { $this->vars["id"] = $this->model->id; $this->vars["actors"] = Actor::all()->lists("name","id"); }
接下來就可以修改插件了pluginsraiseinfomoviesformwidgetsactorboxpartials_widget.htm
現(xiàn)在顯示了演員表中的所有演員的名,但是,沒有顯示所有演員的姓。我們需要在Actor中做適當(dāng)修改:pluginsraiseinfomoviesmodelsActor.php
/** * 訪問器的命名對(duì)應(yīng)的就是full_name * @return string */ public function getFullNameAttribute() { return $this->name." ".$this->lastname; }
File:pluginsraiseinfomoviesformwidgetsActorbox.php
public function prepareVars() { $this->vars["id"] = $this->model->id; $this->vars["actors"] = Actor::all()->lists("full_name","id"); }
這樣顯示的就會(huì)有姓和名了。
為了在前端頁面上顯示演員的信息,我們需要對(duì)select進(jìn)行設(shè)置
File:pluginsraiseinfomoviesformwidgetsActorbox.php
public function prepareVars() { $this->vars["id"] = $this->model->id; $this->vars["actors"] = Actor::all()->lists("full_name","id"); $this->vars["name"] = $this->formField->getName()."[]"; }
File:pluginsraiseinfomoviesformwidgetsactorboxpartials_widget.htm
File:themesraiseinfopagesmovie-single.htm
演員
{% for actor in record.actors %} {{ actor.name }} {{ actor.lastname }} {% endfor %}
刷新前端頁面:
通過上面的測試,我們已經(jīng)知道,演員信息已經(jīng)存儲(chǔ)到數(shù)據(jù)庫了,在前端也顯示出來。下面我們刷新后臺(tái)頁面,打開編輯視頻信息。我們發(fā)現(xiàn)存儲(chǔ)的演員信息并沒有顯示在Select中。
這是因?yàn)槲覀儧]有設(shè)置顯示選定的值。
File:pluginsraiseinfomoviesformwidgetsActorbox.php
public function prepareVars() { $this->vars["id"] = $this->model->id; $this->vars["actors"] = Actor::all()->lists("full_name","id"); $this->vars["name"] = $this->formField->getName()."[]"; // 下面一行 $this->vars["selectedValues"] = $this->getLoadValue(); }
File:pluginsraiseinfomoviesformwidgetsactorboxpartials_widget.htm
好的,現(xiàn)在我們已經(jīng)可以顯示已選擇的演員了,但是,我們?nèi)绻庉嬕粋€(gè)沒有設(shè)置演員的視頻:
解決問題的辦法是:
File:pluginsraiseinfomoviesformwidgetsActorbox.php
public function prepareVars() { $this->vars["id"] = $this->model->id; $this->vars["actors"] = Actor::all()->lists("full_name","id"); $this->vars["name"] = $this->formField->getName()."[]"; if(!empty($this->getLoadValue())){ $this->vars["selectedValues"] = $this->getLoadValue(); }else{ $this->vars["selectedValues"] = []; } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/28880.html
摘要:我們將采用方式完成,在提交保存視頻之前,通過方式實(shí)現(xiàn)提前于保存視頻之前,保存演員信息。我們?cè)僭跀?shù)據(jù)庫中確認(rèn)一下下面,我們對(duì)輸入的用戶姓名進(jìn)行分離。 我們?cè)囍苯釉赟elect中輸入新的演員showImg(https://segmentfault.com/img/bVbcqpZ?w=386&h=276); 點(diǎn)擊保存 showImg(https://segmentfault.com/img...
摘要:創(chuàng)建插件對(duì)于來講是很簡單的事情,因?yàn)椋峁┝艘粋€(gè)插件構(gòu)建器具體步驟這里就不贅述了。安裝完成后,會(huì)出現(xiàn)上圖所示的菜單創(chuàng)建自己的插件的方法是點(diǎn)擊如下圖所示的小按鈕。 創(chuàng)建插件對(duì)于October來講是很簡單的事情,因?yàn)椋琌ctober提供了一個(gè)插件構(gòu)建器:RainLab.Builder showImg(https://segmentfault.com/img/bVbcoxL?w=1266&h...
摘要:所以,實(shí)際上我們沒有辦法保存這些信息。下一節(jié)我們將解決這個(gè)問題。 在上一節(jié)中我們是使用repeater字段存儲(chǔ)演員信息的,當(dāng)然這不是最佳的方式,我們希望,演員的信息能夠存儲(chǔ)在單獨(dú)的表中,而且演員的信息可能需要更多的字段進(jìn)行存儲(chǔ)。然后將演員表和其他表進(jìn)行關(guān)聯(lián),就好像視頻表和風(fēng)格表之間的關(guān)聯(lián)一樣。 showImg(https://segmentfault.com/img/bVbcpEb?w...
摘要:字段是采取數(shù)據(jù)存儲(chǔ)多條數(shù)據(jù)的字段。這樣演員信息就被保存到了數(shù)據(jù)庫的字段中,以格式存儲(chǔ)。查看數(shù)據(jù)庫即可印證上述的結(jié)論。這里通過這個(gè)例子只是說明這種字段的用法。 Repeater字段是采取Json數(shù)據(jù)存儲(chǔ)多條數(shù)據(jù)的字段。 【Builder】——【Database】——【raiseinfo_movies_】為表添加一個(gè)新的列:actorsshowImg(https://segmentfaul...
摘要:本節(jié)將編寫一些實(shí)現(xiàn)對(duì)頁面中內(nèi)容的控制。將內(nèi)容放入容器文件添加類,讓輸出的內(nèi)容在一個(gè)容器中。創(chuàng)建菜單編輯點(diǎn)擊菜單此頁沒有頭和尾,是因?yàn)槲覀儧]有給這個(gè)頁面使用布局再次查看頁面,則顯示正常了為當(dāng)前頁面菜單添加樣式 本節(jié)將編寫一些css實(shí)現(xiàn)對(duì)頁面中內(nèi)容的控制。 將內(nèi)容放入容器 文件:themesraiseinfolayoutsdefault.htm ...
閱讀 890·2021-10-27 14:19
閱讀 1114·2021-10-15 09:42
閱讀 1538·2021-09-14 18:02
閱讀 745·2019-08-30 13:09
閱讀 2990·2019-08-29 15:08
閱讀 2093·2019-08-28 18:05
閱讀 958·2019-08-26 10:25
閱讀 2789·2019-08-23 16:28