soy una nueva yii2 desarrollador !
hice un GridView y el código que se muestra a continuación :

<?php Pjax::begin(); ?>    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\ActionColumn'],
            ['class' => 'yii\grid\CheckboxColumn'],
            ['class' => 'yii\grid\SerialColumn'],
            'id',
            'countryCode',
            'countryName',
            'currencyCode',
        ],
    ]); ?>
    <?php Pjax::end(); ?>

una captura de pantalla de la salida :
SALIDA

ahora quiero tener una columna contienen algún botón y el botón por ejemplo abrir una página o somthing !
mi problema es ¿cómo puedo crear esa columna ?

InformationsquelleAutor sass | 2016-09-27

3 Comentarios

  1. 9

    Usted puede también agregar el botón (o tantos como quieras) a los existentes en la columna acción como esta

    <?= GridView::widget([
        ::
        ::
        'columns' => [
            [
                'class' => 'yii\grid\ActionColumn',
                'template' => '{view} {update} {delete} {myButton}',  //the default buttons + your custom button
                'buttons' => [
                    'myButton' => function($url, $model, $key) {     //render your custom button
                        return Html::a(..);
                    }
                ]
            ]
            ::
            ::
            'currencyCode'
        ]   
    ]); ?>
  2. 0

    Ejemplo:

    <?php Pjax::begin(); ?>
    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\ActionColumn'],
            ['class' => 'yii\grid\CheckboxColumn'],
            ['class' => 'yii\grid\SerialColumn'],
            'id',
            'countryCode',
            'countryName',
            'currencyCode',
            [
                'label' => 'My Label',
                'format' => 'raw',
                'value' => Html::a('Click me', ['site/index'], ['class' => 'btn btn-success btn-xs', 'data-pjax' => 0])
            ]
        ],
    ]); ?>
    <?php Pjax::end(); ?>
  3. 0

    Trate de esta manera:

    [
                'header' => 'Button',
                'content' => function($model) {
                    return Html::a(..);
                }           
    ],

    Más Info

    • gracias !! escribo este código ahora : 'countryCode', 'countryName', 'currencyCode', [ 'header' => 'Button', 'content' => function($model) { return Html::a($text='Test',$url='https://www.google.com'); } ], ahora tengo antother problema , ¿cómo puedo hacer que el texto de este botón una cosa de la base de datos ? me refiero a ¿cómo puedo tener por ejemplo un país de la columna que ser en realidad un botón, no sólo texto ? @insaneSkull
    • El uso de contentOptions y headerOptions. añade html estilo que desee.
    • lo siento pero no entiendo ! entiendo la tecla $es el ID, pero ¿cómo puedo acsses el texto de mi base de datos ?
    • Te refieres a la base de datos de valor? es en $model variable.
    • sí base de datos . me refiero, por ejemplo, el botón o el enlace de la etiqueta está en la línea 6, a continuación, el texto de la etiqueta de ser uno de los valores de base de datos ! escribo este código pero no es correcto :'content' => function($model ,$key,$index, $column) { return Html::a($text=$model,$url='google.com'); }
    • realmente no lo entiendo. mostrar html de ancla desea, voy a convertir en yii2 de anclaje.
    • por ejemplo yo tengo esta columna : 'countryCode', . quiero tener una columna como esta : [ 'header' => 'edit City', 'content' => function($model,$key,$index, $column) { return Html::button('>',$options = ['onclick'=>'editshow('.$key.')','style' => ['border'=>'solid 2px blue']]); } ], pero no quiero que el texto sea ‘>’ . quiero que el texto sea el código del país de esa fila . gracias 🙂 !
    • Escribir $model->countryCode
    • 2px blue’])
    • Gracias!!! :)))))))))
    • Marcar como útil, por lo que puede ser útil para los demás.
    • lo siento por molestarte, pero me olvidé de preguntarle algo . ahora puedo crear mi propio cusom columna, pero si quiero dar la opción de una columna que contiene la base de datos de la columna por ejemplo 'countryCode', 'countryName', 'currencyCode', ¿qué debería yo hacer ? me refiero por ejemplo dar esta columna un atributo onclick o … . de hecho, quiero crear algo como KARTIK GRIDVIEW !!!!
    • Uso ['attribute' => 'column_name', 'value' => function($model) { return 'anything';}]

Dejar respuesta

Please enter your comment!
Please enter your name here