私はCRUDテーブルを持ちたいと思います。具体的には、レコードを編集/削除する必要はなく、CRUD生成テーブルの一番上に表示されるフィルタリング結果の部分のみが私が持っていたい部分。私のテーブルにはデータベースの1つのテーブルからのデータが含まれていますが、私はデータベース内のこの他のテーブルに接続されていない1つのカラムを持っています(テーブルの1つのカラムに基づいて自動生成されるコメントです)。私はテーブルを手作業で生成しますが、フィルタリングでそのパーツを追加したいと思います。私はそれをどうやって行うのか分かりません。それはYii2で手動で行うことが可能ですか、CRUDジェネレータを使用する必要がありますか?Yii2手動で生成されたCRUD
答えて
私はCRUDジェネレータを使用しません。私が望むコードを生成しないためです(また、フィルタも生成しないと思います)。私は表示する必要があるほぼすべてのグリッドビューに適合する基本テンプレートを使用します。
use yii\grid\GridView;
/** @var array $userTypes All user types (classes) */
// ...
echo GridView::widget([
'dataProvider' => $modelProvider,
'filterModel' => $model,
'columns' => [
[
'attribute' => 'id',
'format' => 'raw',
'filter' => Html::input('text', 'User[id]', $model->id, ['class' => 'form-control', 'placeholder' => 'Filter ID']),
[
'attribute' => 'type',
'format' => 'raw',
'filter' => Html::activeDropDownList($model, 'type', $userTypes, ['class' => 'form-control', 'prompt' => 'All types']),
],
]);
ここでは、2つの異なる入力フィールドの種類(テキストとドロップダウン)を使用しています。
Html::input
の場合は、最初にタイプ(テキスト)、フル属性名(モデル名+属性名)、次にデフォルト値、最後に他のオプションです。
Html::activeDropDownList
の場合は、まずモデル、属性名(のみ)、その項目リスト(配列)、最後に他のオプションがあります。
あなたの質問に誤解があった場合は、何らかの説明をしてください。 –
あなたはGridViewについて話していると思います。はいの場合は、あなた自身の列を持つことができます。問題ありません。それをフィルタリングすることができるようにあなたが
を述べたように、あなたがGiiによって生成された基本的なテンプレートを使用する場合、その列comment
を呼び出して、あなたはまた、そのモデルの検索クラスを生成し、その後、あなたはcomment
安全な属性にし、そのコードのためのコードを追加することができます。
あなたが言及した列、可能な値か、より適切な答えを得る可能性がありますalgorythmに関するより詳細なことができれば...
はまたYii 2.0: Displaying, Sorting and Filtering Model Relations on a GridView
を見てとることは、あなたが行ったように、あなたのmodel
がXyz
と呼ばれているとしましょう提供されていません。あなたが関係(それを定義するための具体的な名前を持つメソッド)を追加しますXyz
また、私は\app\models\
public function getComment()
{
$column_from_your_table = $this->column_from_your_table;
$comment = '';
// your code to specify the relation
// ...
// this is value dislpayed in column grid
return $comment;
}
とファイルXyzSearch.php
であなたのモデルではcomment
としてcolumn_from_your_table
としてあなたのテーブルとあなたの仮想列から列の名前
あなたは(ofcourseのニーズにエディット)
<?php
namespace app\models;
use Yii;
use yii\base\Model;
use yii\data\ActiveDataProvider;
use yii\db\Expression;
/**
* XyzSearch represents the model behind the search form about `app\models\Xyz`.
*/
class XyzSearch extends Xyz
{
public $comment; // your virtual column
/**
* @inheritdoc
*/
public function rules()
{
return [
// add it to safe attributes
[['comment'], 'safe'],
// you will have more rules for your other columns from DB probably
];
}
/**
* @inheritdoc
*/
public function scenarios()
{
// bypass scenarios() implementation in the parent class
return Model::scenarios();
}
/**
* Creates data provider instance with search query applied
*
* @param array $params
*
* @return ActiveDataProvider
*/
public function search($params)
{
$query = Xyz::find();
// add conditions that should always apply here
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
// I dont know your how it is your comment column autogenerated
// or what is the relation, so I give you just basic idea
// your algorythm needs to be able to be rewritten in SQL
// otherwise I dont know how you could possibly sort it
$dataProvider->sort->attributes['comment'] = [
'asc' => [Xyz::tableName().'.column_from_your_table' => SORT_ASC],
'desc' => [Xyz::tableName().'.column_from_your_table' => SORT_DESC],
'default' => SORT_ASC,
];
$this->load($params);
if (!$this->validate()) {
// uncomment the following line if you do not want to return any records when validation fails
// $query->where('0=1');
return $dataProvider;
}
// again, you will have more filtering conditions from your generated code
// then you will add your custom filtering condition
// I dont know your how it is your comment column autogenerated
// or what is the relation, so I give you just basic idea
$query->andFilterWhere(['like', Xyz::tableName().'.column_from_your_table', $this->comment]);
return $dataProvider;
}
}
をこのようなものを持っていますfinalyあなた
view
ファイル内
はあなたのVirutalの列
<?php echo GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
// other columns from database
// ...
'comment',
['class' => 'yii\grid\ActionColumn'],
]
]); ?>
- 1. Yii2:自動生成されたCRUDにフィールドを追加する(自動?)
- 2. Yii2:GiiでMySQL/MariaDBビューからCRUDを自動的に生成する方法
- 3. は手動で動的に生成されたGoogleのプラスワン」ボタン
- 4. CRUDジェネレータyii2エラー
- 5. iOSストーリーボードローカリゼーション:生成されたファイルを手動で編集する
- 6. 手順的に生成されたUV
- 7. 自動生成されたidプロパティを手動で設定する
- 8. データベースcrudオペレーションのためのhtmlフォームの自動生成
- 9. R.javaは手動で変更されました!生成バージョンに戻す
- 10. 単純なCRUD生成
- 11. yii2で動的に生成されるチェックボックスのルールを定義します
- 12. Yii2のGiiを使用してデータベースビューからCRUDを作成
- 13. 手動で作成したdivの下に生成されたdivをappendChildする方法は?
- 14. Yii2 CRUDにクラスを追加するGridView
- 15. Knockout.js:手動で計算された
- 16. Hibernateを手動で生成し、jpaを手動で有効にします
- 17. symfony 2:自動生成されたナビゲーションメニュー
- 18. 動的に生成されたXAML
- 19. 動的に生成されたデータ
- 20. 動的に生成されたWebUserコントロール
- 21. 動的に生成されたPerl Moo
- 22. 動的生成されたラジオボタンのモデルアップデート
- 23. グリッドビュー動的に生成された列
- 24. 動的に生成されたfavicon
- 25. リードバックの自動生成されたインデックスファイル
- 26. 動的に生成されたmailto
- 27. 自動生成されたpdf
- 28. 動的に生成されたGUI
- 29. 動的に生成されたCSS
- 30. ストリーム動的に生成されたコンテンツ
あなたがGridViewコントロールを意味するかを追加しますか? – Yupik