Heim  >  Artikel  >  Backend-Entwicklung  >  Implementierungsmethode für ein YII-bezogenes Feld mit Such- und Sortierfunktion

Implementierungsmethode für ein YII-bezogenes Feld mit Such- und Sortierfunktion

一个新手
一个新手Original
2017-10-23 09:06:461309Durchsuche

1. Einführung

Es ist fast zwei Monate her, seit ich mit dem YII-Framework in Berührung gekommen bin, aber mein Verständnis des YII-Frameworks ist nicht sehr tiefgreifend, ich mache es nur Wenn ich an einem Projekt arbeite, greife ich nur dann auf das Handbuch zurück, wenn ich auf etwas stoße, das ich nicht verstehe.

Im vorherigen Projekt war es notwendig, die Felder der zugehörigen Tabellen anzuzeigen und Such- und Sortierfunktionen bereitzustellen. Dies war mir vorher noch nicht begegnet, also habe ich im Handbuch nach relevanten Informationen gesucht und diese aufgeschrieben Anforderung, und habe mir ein paar Notizen zu Youdao Cloud gemacht. Heute ist Wochenende und ich werde es in einem Blog organisieren, wenn ich Zeit habe.

Kommen wir ohne weitere Umschweife direkt zu den Schritten.

2. Arbeitsschritte

Hintergrund: Fügen Sie hier Zuordnungstabellenfelder zur von GII automatisch generierten CURL hinzu.

Anforderung: Es gibt ein Feld pt_id in Tabelle A, das mit Tabelle B verknüpft ist. Jetzt muss der Namenswert des mit Tabelle B verknüpften Felds basierend auf der auf GII von Tabelle A generierten CURL hinzugefügt werden eine Such- und Sortierfunktion.

2.1. Schritt 1: Methode in A-Modell hinzufügen


1 //意思即获取Pt的数据
2 public function getPt()    //get**  get后面任意
3 {
4     //模型名:className(),B表字段=>A表对应字段 
5     return $this->hasOne(Pt::className(), ['id' => 'ptid']); 
6 }

2.2. Feldvariablen hinzufügen, die in A-Suche verknüpft werden müssen


1 public $name;   //可以关联显示多个字段
2 public $*****;  //例子

2.3. Ändern Sie die Suchfunktion in A. Suche


1 //search函数中添加 表示在SQL语句中增加关联查询
2 //看起来是那么的熟悉,哈哈
3 $query->joinWith(['pt']);   //这里等待pt中的值就是step1中get后面的命名

2.4 Suchkonfiguration


 1 //这里存放的是可以排序的字段 
 2 //如果A Search已经存在setSort,则其他动,只需要添加新的字段就可以了 
 3 //但是,我的yii 2生成的Search不存在这个排序,因此就需要额外添加了 
 4 //注意:当你的search中不存在这个配置时,即表明默认配置里面有设置过,当你在这里添加一个setSort则将会覆盖默认配置,之前默认有排序功能的字段将会失效 
 5 $dataProvider->setSort( 
 6 'attributes'=>[ 
 7 //====添加新字段排序配置= 
 8 'name'=>[ 
 9 'asc'=>['name' => SORT_ASC],
 10 'desc'=>['name' => SORT_DESC],
 11 'lable'=>'name',
 12 ],
 13 //==================
 14 ]
 15 );

2.5. Filterkonfiguration in einer Suche hinzufügen


1 //在代码里面照着队形添加这一句即可
2 //like,关联表全名,this->name
3 $query->andFilterWhere(['like', '**_pt.name', $this->name]) ;

2.6 Die Rasteransicht in der Ansicht


 1 'columns' => [ 
 2 //=========== 
 3 //添加 
 4 [ 
 5           'attribute' => 'name', 
 6           'label' => '平台', 
 7           'value' => 'pt.name', 
 8           'filter' => Html::activeTextInput($searchModel, 'name', [ 
 9               'class' => 'form-control'
 10           ]),
 11 ],
 12 //=============
 13 ]

ist zu diesem Zeitpunkt mehr als zur Hälfte fertig. Wenn Sie auf diesen Controller zugreifen, können Sie den Seiteneffekt bereits sehen, aber er ist tatsächlich vorhanden true bei der Suche. Ungültig, warum?

Da die Feldinformationen, die Sie zu diesem Zeitpunkt übermittelt haben, unsicher sind und nicht im Programm aufgezeichnet werden.

 2.7. Legen Sie die Sicherheitsstufe für dieses Feld fest


1 //在A Search中的设置规则方法中添加
2 //name字段为safe
3 [['name'], safe]

Fertig! !

3. Zusammenfassung

Anhand dieses Beispiels erfahren Sie, wie Sie verwandte Felder in Yii hinzufügen und dann basierend auf Ihren vorhandenen Kenntnissen weitere Änderungen vornehmen können herauskommen. . . .

Das obige ist der detaillierte Inhalt vonImplementierungsmethode für ein YII-bezogenes Feld mit Such- und Sortierfunktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn