zf3belcebur/mvc-basic-tools

此包已被弃用且不再维护。未建议替代包。

ZF3 控制器、视图、助手、插件等工具...

v1.0.3 2019-11-11 14:31 UTC

This package is auto-updated.

Last update: 2022-08-12 19:10:28 UTC


README

视图和控制器工具

查看

安装

此模块的安装使用 composer。有关 composer 文档,请参阅 getcomposer.org

composer require zf3belcebur/mvc-basic-tools

然后添加 ZF3Belcebur\MvcBasicTools 到您的 config/application.config.php

控制器插件

  • 将 Doctrine ORM Auth 集成到控制器中
/** @var \ZF3Belcebur\MvcBasicTools\Controller\Plugin\AuthenticatePlugin $authPlugin 
$authPlugin=$this->authenticatePlugin();
$authPlugin->authenticate('myCredential','myPassword'); // return \Zend\Authentication\Result
$authPlugin->logout(); // Clear session

抽象控制器

扩展控制器以添加更多功能

  • ZF3Belcebur\MVCBasicTools\BaseController
  • ZF3Belcebur\MVCBasicTools\BaseRestfulController
  • ZF3Belcebur\MVCBasicTools\FormManagerController
  • ZF3Belcebur\MVCBasicTools\FormManagerRestfulController

ZF3Belcebur\MVCBasicTools\BaseController & ZF3Belcebur\MVCBasicTools\BaseRestfulController 属性

    /** @var int defined from PHP CONSTANT "DEFAULT_LIMIT_ITEMS_PER_PAGE", if constant is not defined the value is 50 */
    protected $limitItemsPerPage;

    /** @var int defined from query param "page", by default 1*/
    protected $currentPageNumber;

    /** @var int defined from query param "limit", by default $this->limitItemsPerPage*/
    protected $itemCountPerPage;

ZF3Belcebur\MVCBasicTools\BaseController & ZF3Belcebur\MVCBasicTools\BaseRestfulController 方法

  • 从 Doctrine ORM QueryBuilder 创建分页器
    /**
     * @param QueryBuilder $qb
     * @param bool $fetchJoinCollection
     * @param string|null $prefix
     * @param int $queryHydrationMode
     * @return Paginator
     */
    public function createPaginator(QueryBuilder $qb, bool $fetchJoinCollection = false, string $prefix = null, int $queryHydrationMode = Query::HYDRATE_OBJECT): Paginator;
  • 将分页器转换为数组结果
    /**
     * @param Paginator $paginator
     * @param bool $isJsonModel
     * @param array $extraParams
     * @return array
     */
    public function getPaginatorArrayResult(Paginator $paginator, bool $isJsonModel = true, array $extraParams = []): array
    
  • 比较当前 URL 与其他路由,如果不同则重定向
    /**
     * @param string $routeName
     * @param array $routeParams
     * @param int $statusCode
     * @return HttpResponse|null
     */
    public function checkAndRedirectUrl(string $routeName, array $routeParams = [], int $statusCode = 301): ?HttpResponse
    
  • 获取 MvcTranslator
    /**
     * @return MvcTranslator
     */
    public function getMvcTranslator(): MvcTranslator
    
  • 获取 Translator
    /**
     * @return Translator
     */
    public function getTranslator(): Translator
  • 在控制器中直接调用 translate 方法
    /**
     * @param $message
     * @param string $textDomain
     * @param string|null $locale
     * @return string
     */
    public function translate($message, string $textDomain = 'default', string $locale = null): string
  • 获取 Router
   /**
    * @return TranslatorAwareTreeRouteStack|TreeRouteStack|SimpleRouteStack|RouteStackInterface
    */
   public function getRouter(): RouteStackInterface
    
  • 获取 Doctrine ORM EntityManager
    /**
     * @return EntityManager
     */
    public function getEntityManager(): EntityManager

ZF3Belcebur\MVCBasicTools\FormManagerController & ZF3Belcebur\MVCBasicTools\FormManagerController 方法

  • 扩展 ZF3Belcebur\MVCBasicTools\BaseController
  • getFormManager();
    • 返回 \Zend\Form\FormElementManager\FormElementManagerV3Polyfill

控制器工厂

  • ZF3Belcebur\MVCBasicTools\Factory\ControllerBaseControllerFactory
  • ZF3Belcebur\MVCBasicTools\Factory\ControllerBaseRestfulControllerFactory
  • ZF3Belcebur\MVCBasicTools\Factory\ControllerFormManagerControllerFactory
  • ZF3Belcebur\MVCBasicTools\Factory\ControllerFormManagerRestfulControllerFactory

视图助手

<?php 
use ZF3Belcebur\MvcBasicTools\View\Helper\BTools;
/** @var BTools $bTools */
$bTools=$this->bTools();

BTools::nl2br("\n");
BTools::br2nl('<br><br>');
BTools::trim('    ');
BTools::randomPassword(10);
BTools::convertToUTF8('hello');
BTools::splitTextByDotOrSpace('cut this',false,3); // cut...
BTools::slugify('حولا كيو تل'); // 'hwla-kyw-tl'
BTools::slugify('你好,这样的'); // 'ni-hao-zhe-yang-de'
BTools::slugify('그러한 안녕하세요'); // 'geuleohan-annyeonghaseyo'
BTools::slugify('त्यस्तो नमस्'); // 'tyasto-namas'
BTools::slugify('hola que tal'); // 'hola-que-tal'
BTools::slugify('привет, что такой'); // 'privet-cto-takoj'

$bTools->getParams(); // return Params Plugin Controller 
$bTools->getPluginManager(); 
$bTools->getMetaBy('name','description'); // get meta name=description content 
$bTools->getMetaBy('property','og:locale'); // get meta property=og:locale content 
$bTools->getMetaByName('description','things'); // get meta name=description content, if not exist return 'things" 
$bTools->getMetaByProperty('og:locale'); // get meta property=og:locale content
$bTools->getRouteMatch();
$bTools->getRouter();
$bTools->getFormElementManager();
$bTools->getMvcTranslator();
 
// Only in view
$bTools->getParams()->fromRoute(); // return array params from route
//Layout Or View
$bTools->getParamsFromRoute(); // return array params from route
$bTools->getParamFromRoute('param','default'); // return param from route or default value
$bTools->getParams()->fromRoute(); // return array params from route