Я хотел бы иметь таблицу CRUD, и, чтобы быть конкретным, мне не нужно редактировать/удалять записи, только часть с результатами фильтрации, которая появляется в верхней части таблицы, сгенерированной CRUD, является часть, которую я хочу иметь. Моя таблица содержит данные из 1 таблицы в базе данных, но у меня есть один столбец, который не связан с этой или любой другой таблицей в базе данных (это автоматический автогенератор, основанный на одном столбце из таблицы). Я создаю таблицу вручную, но хочу добавить часть с фильтрацией. Я не знаю, как это сделать. Возможно ли в Yii2 сделать это вручную или мне нужно использовать CRUD-генератор?Yii2 CRUD сгенерировано вручную
ответ
Я не использую генератор CRUD, поскольку он не генерирует код, который я хочу (и я думаю, что он также не генерирует фильтры?). Я использую базовый шаблон, который подходит для почти всех gridviews, которые мне нужно отображать. Вот один пример, который может дать вам фильтр:
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, если да, тогда у вас могут быть свои собственные столбцы, без проблем. позволяет называть этот столбец comment
как вы упомянули
Если вы используете основной шаблон, генерируемый Gii, и вы также генерировать класс поиска для этой модели, то вам comment
в безопасные атрибуты и добавить код для этого кода, чтобы иметь возможность фильтровать ,
Если бы вы могли быть более подробно о упомянутой колонке, возможные значения или Algorythm вы можете получить более подходящие ответы ...
принять Также обратите внимание на Yii 2.0: Displaying, Sorting and Filtering Model Relations on a GridView
Допустим, ваш model
называется Xyz
, как вы делали не предусмотрено. Кроме того, я назвал столбец из таблицы, как column_from_your_table
и ваш виртуальный столбец в comment
В модели Xyz
вы добавите связь (метод с определенным именем, чтобы определить его)
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
в \app\models\
вы будете иметь что-то вроде этого (редактировать для ваших нужд 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;
}
}
, наконец, в файле 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 generator
- 2. Yii2 CRUD issue
- 3. Yii2 CRUD url issue
- 4. CRUD генератор yii2 ошибка
- 5. Gii CRUD в Yii2. Соотношение рассогласованных соединений.
- 6. yii2 - CRUD для многих-многих отношений
- 7. создать crud не работает в yii2
- 8. Yii2: добавить поле к автогенерируемому CRUD (автоматически?)
- 9. CRUD, редактировать вручную пользователя FOSUserBundle Symfony
- 10. Отображается сгенерировано bytebuddy bytecode
- 11. Yii2: Как вручную загрузить пользовательский интерфейс jQuery?
- 12. Установите расширение Yii2 вручную без использования Composer
- 13. Yii2 расширение GII CRUD со многими ко многих элементам формы
- 14. После использования аутентификации amnah бэкэнда crud пользовательского модуля отображается пользовательский модуль Yii2, а не пользователь CRUD
- 15. Yii2 Advanced: Request return 404 error из сгенерированного представления CRUD
- 16. Yii2 CORS с Auth не работает для действий без CRUD
- 17. Как работать с CRUD во многих отношениях во Yii2?
- 18. CRUD генерироваться контроллеры и его действия не называются yii2 расширенный
- 19. Yii2 «Страница не найдена» при использовании генератора CRUD
- 20. Кэширование сгенерировано QR-код
- 21. Поймайте db2_prepare сгенерировано предупреждение
- 22. Ошибка Asterisk - сгенерировано ядро
- 23. Время создания сгенерировано
- 24. Сгенерировано время компиляции Array?
- 25. Почему несколько Rjava сгенерировано
- 26. Jekyll сообщение не сгенерировано
- 27. xsd2code ++ ограничений не сгенерировано
- 28. Отображается сообщение сгенерировано Silverlight
- 29. Управление MediaWiki сгенерировано html
- 30. поколения [Сгенерировано Java Fille]
ли вы имеете в виду GridView? – Yupik