Difference between #244 and #261 of
Yii v2 snippet guide

Changes

Title unchanged

Yii v2 snippet guide

Category unchanged

Tutorials

Yii version unchanged

2.0

Tags unchanged

tutorial,beginner,yii2

Content changed

**Intro**
 
---
 
Hi all!
 
 
**This article had to be split as I reached the max length. Second part is here: **
 
## My articles
 
Articles are separated into more files as there is the max lenght for each file on wiki.
 
 
* [Yii v1 for beginners](https://www.yiiframework.com/wiki/250/yii-for-beginners)
 
* [Yii v1 for beginners 2](https://www.yiiframework.com/wiki/462/yii-for-beginners-2)
 
* [Yii v2 snippet guide I](https://www.yiiframework.com/wiki/2552/yii-v2-snippet-guide)
-* [Yii v2 snippet guide II](https://www.yiiframework.com/wiki/2558/yii-v2-snippet-guide-ii)
 
* [Yii v2 snippet guide III
](https://www.yiiframework.com/wiki/255867/yii-v2-snippet-guide-iii)  
* [Začínáme s PHP frameworkem Yii2 (I) česky - YouTube](https://youtu.be/ub06hNoL8B8)
 
 
**Intro**
 
---
 
Hi all!
This snippet guide works with the basic Yii demo application and enhances it. It continues in my series of simple Yii tutorials. Previous two contain basic info about MVC concept, exporting to Excel and other topics so read them as well, but they are meant for Yii v1. I started with them cca in year 2011:
 
 
- [https://www.yiiframework.com/wiki/250/yii-for-beginners](https://www.yiiframework.com/wiki/250/yii-for-beginners)
 
- [https://www.yiiframework.com/wiki/462/yii-for-beginners-2](https://www.yiiframework.com/wiki/462/yii-for-beginners-2)
 
 
... and today I am beginning with Yii 2 so I will also gather my snippets and publish them here so we all can quickly setup the yii-basic-demo just by copying and pasting. This is my goal - to show how-to without long descriptions.
 
 
I was suprised that the Yii 2 demo application does not contain some basic functionalities (like login via DB, translations etc) which must be implemented in the most of web projects so I will focus on them. Plus I will talk about GitLab. 

 
 
... and today I am beginning with Yii 2 so I will also gather my snippets and publish them here so we all can quickly setup the yii-basic-demo just by copying and pasting. This is my goal - to show how-to without long descriptions.


If you find any problems in my snippets, let me know, please.
[...]
---

Once you download and run the basic app, I recommend to push it into [GitLab](https://gitlab.com/). You will probably need a SSH certificate which can be generated [like this](https://www.huber.xyz/?p=275) using [PuTTYgen](https://www.puttygen.com/)
 or command "ssh-keygen" in Windows10. When I work with Git I use [TortoiseGIT](https://www.puttygen.com/) which integrates all git functionalities into the context menu in Windows File Explorer. First go to GitLab web and [create a new project](https://gitlab.com/projects/new). Then you might need to fight a bit, because the process of connecting your PC to GIT seems to be quite complicated. At least for me. Note: [Here](https://gitlab.com/-/profile/keys) you can add the public SSH key to GitLab. Private key must be named "id_rsa" and stored in Win10 on path C:\\Users\\{username}\\.ssh\\id_rsa
 
 
Once things work, just create an empty folder, right click it and select Git Clone. Enter your git path, best is this format:

- git@gitlab.com:{username}/{projectName}.git
[...]
---

I found these two pages where things are explained: [link](https://www.savjee.be/2019/04/gitlab-ci-deploy-to-ftp-with-lftp/) [link](https://stackoverflow.com/questions/49632077/use-gitlab-pipeline-to-push-data-to-ftpserver)
 and I just copied something. You only need to create file in your GitLab repository. It is named .gitlab-ci.yml and it should contain following code:.gitlab-ci.yml in the root of your repository with following content. It will fire a Pipeline job on commit using "LFTP client" automatically. If you want to do it manually, add "when:manual", see below.

```
[...]
script:
- apt-get update -qq && apt-get install -y -qq lftp
- lftp -c "set ftp:ssl-allow no; open -u $USERNAME,$PASSWORD $HOST; mirror -Rnev ./ $TARGETFOLDER --ignore-time --parallel=10 --exclude-glob .git* --exclude .git/ --exclude vendor --exclude web/assets --exclude web/index.php --exclude web/index-test.php
 --exclude .gitlab-ci.yml" only: - master   when: manual
 
``` I just added some exclusions (listed belowsee the code) and will probably add **--delete** in the future. Read linked webs. - exclude vendor = huge folder with 3rd party SW which is not in GIT
 
- exclude web/assets = also some cache
 
- exclude web/index.php = in GIT is your devel index with DEBUG mode enabled. You 

 
**Important info:** Your FTP server might block foreign IPs. If this happens, your transfer will fail with error 530. You must fin
donut wanna have this file in productive environment
 
- exclude web/index-test.php = tests are only on your computer and in GIT
 
 
.
 
 
GitLab's IPs and whitelist them. [This link]( https://docs.gitlab.com/ee/user/gitlab_com/#ip-range) might help.

**User management + DB creation + login via DB**
[...]
```

.
 
 
.
 
 
**Tests - unit + opa** --- ... text ...
 
 
.
 
 
see next chapters ...

**Adding a google-like calendar**
[...]
And right above your GridView place this link:

```
html
 
<?
php  <?php
 
  // Pjax::begin(); // If you are using Pjax for GridView, it must start before following buttons.
 
?>
 
 
<div style="display:flex;flex-direction:row;">
 
  <?= Html::a('+ Create new record', ['create'], ['class' => 'btn btn-success']) ?>
 
  &nbsp;
 
  <div class="btn-group">
 
    <button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
 
      Export to CSV&nbsp;<span class="caret"></span>
 
    </button>
 
    <ul class="dropdown-menu">
 
      <li><?php
 
          echo Html::a('Ignore filters and sorting', ['index', 'exportToCsv' => 1], ['target' => '_blank', 'class' => 'text-left', 'data-pjax'=>'0']);
 
          // 'data-pjax'=>'0' is necessaary to avoid PJAX. 
 
          // Now we need to open the link in a new tab, not to resolve it as an ajax request.
 
          ?></li>
 
      <li><?php
 
        
$csvUrl = \yii\helpers\Url::current(['exportToCsv' => 1]);          echo Html::a('Export', $csvUrl, ['class' => 'btn btn-info', 'target'=>'_blank']);Preserve filters and sorting', $csvUrl, ['target' => '_blank', 'class' => 'text-left', 'data-pjax'=>'0']);
 
          // 'data-pjax'=>'0' is necessaary to avoid PJAX. 
 
          // Now we need to open the link in a new tab, not to resolve it as an ajax request.
 
          ?></li>
 
    </ul>
 
  </div>
 
</div>
 
 
<php
 
// Here goes the rest ... 
 
// echo GridView::widget([
 
// ...

?>
```
[...]
**Next chapters had to be moved to a new article!**
---

 
 
**This article had to be split as I reached the max length. Second part is here:**
 
 
- [https://www.yiiframework.com/wiki/2558/yii-v2-snippet-guide-ii](https://www.yiiframework.com/wiki/2558/yii-v2-snippet-guide-ii)
7 0
4 followers
Viewed: 275 155 times
Version: 2.0
Category: Tutorials
Written by: rackycz
Last updated by: rackycz
Created on: Sep 19, 2019
Last updated: a year ago
Update Article

Revisions

View all history