Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
systems:yii2:examples [2018/05/31 15:17]
smayr [Modal confirmation called from GridView]
systems:yii2:examples [2018/10/04 17:05] (current)
ajdavis [Copy to Clipboard using Javascript]
Line 1530: Line 1530:
  
 === Modal Window === === Modal Window ===
- +  * See: [[systems:yii2:Modal Window]]
-<code php> +
-<?php +
-    //------------------------ +
-    // Image +
-    //------------------------ +
-    $itemImage = (!empty($model->image_file) ?  +
-        Yii::$app->homeUrl . 'img/data/' . Yii::$app->controller->id . "/{$model->image_file}" :  +
-        '' +
-    ); +
-     +
-    //------------------------ +
-    // Image Thumbnail +
-    //------------------------ +
-    if(!empty($itemImage)) { +
-        echo "<img class='img-thumbnail' src='{$itemImage}' alt='Item Image'>"; +
-    } else { +
-        echo "<img class='img-thumbnail' src='data:image/png;base64," .  +
-            base64_encode(\app\models\Tool::generateEmptyPng()) . "'/>"; +
-    } +
- +
- +
-    echo Html::a('<i class="fa fa-plus" aria-hidden="true"></i> ' . Yii::t('app', 'Add Image'),  +
-        ['upload-image', 'id' => $model->id], ['class' => 'btn btn-default'+
-    ); +
- +
-    //------------------------ +
-    // Modal to view image  +
-    //------------------------ +
-    yii\bootstrap\Modal::begin([ +
-        'header' => '<h4>Item Image</h4>', +
-        'size'   => yii\bootstrap\Modal::SIZE_LARGE, +
-        'toggleButton' => [ +
-            'label' => '<i class="fa fa-image" aria-hidden="true"></i> ' . Yii::t('app', 'View Image'),  +
-            'class' => 'btn btn-default' +
-        ], +
-    ]); +
- +
-    if(!empty($itemImage)) { +
-        echo "<img class='img-fluid' src='{$itemImage}' alt='Item Image'>"; +
-    } else { +
-        echo "<img class='img-fluid' src='data:image/png;base64," .  +
-            base64_encode(\app\models\Tool::generateEmptyPng()) . "'/>"; +
-    } +
-    echo '<div class="modal-footer">'; +
-    echo '    <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>'; +
-    echo '</div>'; +
- +
-    yii\bootstrap\Modal::end();   +
-?> +
-</code> +
- +
-==== Modal called from GridView ==== +
-Modal to view or update a record, called from a ''GridView'': +
-<code php> +
-<?= yii\grid\GridView::widget([ +
-    'dataProvider' => $dataProviderPrice, +
-    'filterModel'  => $searchModelPrice, +
-    'tableOptions' => ['class' => 'table table-striped table-bordered table-hover'], +
-    'columns' => [ +
-        // record number column +
-        ['class' => 'yii\grid\SerialColumn'],   +
-        'id', +
-        'item_code', +
-        'description', +
-        //['class' => 'yii\grid\ActionColumn'], +
-        [ +
-            'class' => 'yii\grid\ActionColumn', +
-            //'template' => '{view} {update} {delete}', +
-            'buttons' => [ +
-                'view' => function ($url, $model) { +
-                     return Html::a('<span class="glyphicon glyphicon-eye-open"></span>', $url , ['class' => 'view', 'data-pjax' => '1']); +
-                }, +
-                'update' => function ($url, $model) { +
-                     return Html::a('<span class="glyphicon glyphicon-pencil"></span>', $url , ['class' => 'update', 'data-pjax' => '0']); +
-                }, +
-            ], +
-        ],  +
-    ], +
-]) ?> +
- +
-<?php +
-    // Attach click events to buttons 'View' and 'Update' +
-    $this->registerJs( +
-        "$(document).ready(function() { +
-            $('.view').click(function(e){ +
-               e.preventDefault(); +
-               $('#modalView').modal('show'+
-                   .find('.modal-content'+
-                   .load($(this).attr('href')); +
-           }); +
-           $('.update').click(function(e){ +
-               e.preventDefault();       +
-               $('#modalUpdate').modal('show'+
-                   .find('.modal-content'+
-                   .load($(this).attr('href')); +
-           }); +
-       }); +
-    "); +
-?> +
- +
-<?php +
-    // Modal for VIEW +
-    yii\bootstrap\Modal::begin([ +
-        'id'           => 'modalView', +
-        'header'       => '<b>' . Yii::t('app', 'View') . '</b>', +
-        'footer'       => Html::submitButton(Yii::t('app', 'Close')), +
-        //'toggleButton' => ['label' => '<span class="glyphicon glyphicon-eye-open"></span>', 'href' => yii\helpers\Url::to(['view'])], +
-        'size' => yii\bootstrap\Modal::SIZE_LARGE, +
-    ]); +
-    echo "<div id='modal-content'></div>"; +
-    yii\bootstrap\Modal::end(); +
-?> +
- +
-<?php +
-    // Modal for UPDATE +
-    yii\bootstrap\Modal::begin([ +
-        'id'           => 'modalUpdate', +
-        'header'       => '<b>' . Yii::t('app', 'Update') . '</b>', +
-        'footer'       => Html::submitButton(Yii::t('app', 'Close')), +
-        //'toggleButton' => ['label' => '<span class="glyphicon glyphicon-pencil"></span>', 'href' => yii\helpers\Url::to(['update'])], +
-        'size' => yii\bootstrap\Modal::SIZE_LARGE, +
-    ]); +
-    echo "<div id='modal-content'></div>"; +
-    yii\bootstrap\Modal::end(); +
-?> +
-</code> +
- +
-See also: [[http://techbloghunting.com/2017/05/17/yii2-bootstrap-modal/|Yii2 Bootstrap Modal]] +
- +
-==== Modal confirmation called from GridView ==== +
-  * See: [[systems:yii2:modal_window]]+
  
  
Line 1789: Line 1658:
             'createdAtAttribute' => 'created_at', // OR 'create_time', to override default field name             'createdAtAttribute' => 'created_at', // OR 'create_time', to override default field name
             'updatedAtAttribute' => 'updated_at', // OR 'update_time', to override default field name             'updatedAtAttribute' => 'updated_at', // OR 'update_time', to override default field name
-            'value' => new \yii\db\Expression('NOW()'),+            'value' => new \yii\db\Expression('NOW()'),  // for PHP/SQL datetime field 
 +            //'value' => time(),                         // for epoch time (unix) field
         ],         ],
         [         [
Line 3089: Line 2959:
 $dataProviderPrice->pagination->pageSizeLimit   = false; $dataProviderPrice->pagination->pageSizeLimit   = false;
 </code>         </code>        
 +
 +== Copy to Clipboard using Javascript ==
 +
 + # Add a reference to the //ClipboardJS// library either by using Yii2 registerJsFile or adding the file to ''assets\AppAsset.php''
 + # Add javascript to your page that creates an instance of ClipboardJS:
 +<code php>$this->registerJs("var clipboard = new ClipboardJS('.btn-clip');", \yii\web\View::POS_END);</code>
 + # Add a button that follows this logic:
 +<code html>
 +<i class="fa fa-copy btn btn-default btn-clip" data-clipboard-text="value-to-copy"></i>
 +</code>