Для получения полного доступа
зарегистрируйтесь


CPU:

lscpu

Memory:

less /proc/meminfo

Hard Drive:

sudo fdisk -l | grep Disk

Network:

ifconfig -a
ethtool {interface name} | grep -i speed

Проверяем установленую версию:

git --version
git version 1.7.12.4 (Apple Git-37)

Устанавливаем git с помощью brew:

brew install git

Добавляем в ~/.bash_profile новую строчку:

export PATH="/usr/local/bin:$PATH"

Применяем изменения:

source .bash_profile

Проверяем версию:

git --version
git version 2.11.1

Стандартный класс LinkPager генерирует HTML-код постраничной навигации, который неправильно отображается с Bootstrap 4. Этот сниппет исправляет эту проблему.

<?php

namespace app\components;

use Yii;
use yii\helpers\Html;
use yii\widgets\LinkPager;

class BootstrapLinkPager extends LinkPager
{
    /**
     * @inheritdoc
     */
    public function init()
    {
        parent::init();

        // In Bootstrap 4 no div's "next" and "prev", so you need to overwrite the default values
        $this->prevPageCssClass = 'page-item';
        $this->nextPageCssClass = 'page-item';

        // Change the location and size of block
        // https://v4-alpha.getbootstrap.com/components/pagination/#alignment
        // https://v4-alpha.getbootstrap.com/components/pagination/#sizing
        $this->options['class'] = 'pagination justify-content-center';

        // Change standard arrows "«" and "»"
        $this->nextPageLabel = Yii::t('app', 'Next');
        $this->prevPageLabel = Yii::t('app', 'Previous');

        // Default div for links
        $this->linkOptions['class'] = 'page-link';
    }

    /**
     * @inheritdoc
     */
    public function run()
    {
        if ($this->registerLinkTags) {
            $this->registerLinkTags();
        }

        if ($this->pagination->getPageCount() > 1) {
            echo Html::tag('nav', $this->renderPageButtons());
        }
    }

    /**
     * @inheritdoc
     */
    protected function renderPageButton($label, $page, $class, $disabled, $active)
    {
        $options = ['class' => empty($class) ? 'page-item' : $class];
        $linkOptions = $this->linkOptions;

        if ($active) {
            Html::addCssClass($options, $this->activePageCssClass);
        }

        if ($disabled) {
            Html::addCssClass($options, $this->disabledPageCssClass);
            $linkOptions['tabindex'] = '-1';
        }

        return Html::tag('li', Html::a($label, $this->pagination->createUrl($page), $linkOptions), $options);
    }
}

Использовать просто: вместо LinkPager при вызове используйте BootstrapLinkPager.

Установить другой шаблон:

$this->layout()->setTemplate('layout/new-layout');

Добавить новый шаблон для сайдбара:

$view = new ViewModel();
$sideView = new ViewModel();
$sideView->setTemplate('content/sidebar');
$this->$layout->addChild($sideView, 'side-view');
return $view;

Отключить шаблон:

$view = new ViewModel();
$view->setTerminal(true);
return $view;

Разные файлы шаблона для разных контролеров:

//module.php
public function init(ModuleManager $moduleManager){
    $sharedEvents = $moduleManager->getEventManager()->getSharedManager();
    $sharedEvents->attach(__NAMESPACE__, 'dispatch', function($e) {
        $controller = $e->getTarget();
        if ($controller instanceof Controller\FrontEndController) {
            $controller->layout('layout/front');
        }
    }, 100);
}

Получить доступ к объекту View в модули:

public function onBootstrap($e){
  $app = $e->getApplication();
  $viewModel = $app->getMvcEvent()->getViewModel();
}

Получить значение представления в Layout:

$viewModel = $this->viewModel()->getCurrent();
$children = $viewModel->getChildren();
$viewModel = $children[0];
$viewModel->foo;

Переопределить шаблон для View:

$view = new ViewModel();
$view->setTemplate('my-template.phtml');

Передать переменные в представление:

$view = new ViewModel();
$view->setVariables(['var' => 'foo']);

Добавление нескольких объектов View Model и передача их в представления:

$view = new ViewModel();
$sidebarView = new ViewModel();
$sidebarView->setTemplate('content/sidebar');
$view->addChild($sidebarView, 'sidebar');
return $view;

Отключить представления (view):

$response = $this->getResponse();
$response->setStatusCode(200);
return $response;

Вернуть Json ответ (response):

$view = new JsonModel(['success' => '1','data'=>'foo']);
return $response;
namespace MyModule\Controller;
 
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
 
class MyController extends AbstractActionController
{

    public function indexAction()
    {
    	return new ViewModel(['id' => $id, 'form' => $form]);
        // или return ['id' => $id, 'form' => $form];
    }
 
}

// добавляем новое сообщение 
public function indexAction() {
    $this->flashMessenger()->addMessage('Message');
}

// передаём сообщение в представления (view) с помощью EventManager
$em = $e->getApplication()->getEventManager();

$em->attach(\Zend\Mvc\MvcEvent::EVENT_RENDER, function($e) {

    $messenger = new \Zend\Mvc\Controller\Plugin\FlashMessenger();
    
    if ($messenger->hasMessages()) {
        $messages = $messenger->getMessages();
        $e->getViewModel()->setVariable('flashMessages', $messages);
    }
    
});

// получаем все сообщение в представлении (view)
<?php if (isset($flashMessages)) : ?>
  <ul class="flash-messages">
       <?php foreach ($flashMessages as $message) : ?>
          <li> <?= $message; ?></li>
       <?php endforeach; ?>
  </ul>
 <?php endif; ?>
// создаем новый контейнер
$session = new Zend\Session\Container('user');

// сохраняем имя пользователя в сессию
$session->username = 'dignity';

// Получаем имя пользователя из сессии
$username = $session->username;

Перенаправление на определённый маршрут (route):

// page - маршрут (route)
// action - действие, на которое нужно сделать перенаправление
// param - параметр, например id
$this->redirect()->toRoute('page', ['action' => 'show'], ['param => 1']);

Перенаправление на опредёлённый контроллер и действия:

// controllerName - имя контроллера (controller)
// actionName - имя действия (action)
$this->forward()->dispatch('controllerName', ['action' => 'actionName']);

Перенаправление на опредёлённую ссылку:

$this->redirect()->toUrl('http://google.com');

Перенаправление на страницу 404:

$this->getResponse()->setStatusCode(404);