crumby/route-resolver 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

crumby/route-resolver

Composer 安装命令:

composer require crumby/route-resolver

包简介

Localized Url builder for Laravel 5.4 with dynamic parameters resolution.

README 文档

README

> composer require crumby/route-resolver:"dev-master"
> php artisan vendor:publish --provider="Crumby\RouteResolver\RouteResolverServiceProvider" --tag=config

Register service and facade:

File: config/app.php

'providers' => [
    ......................
    'Crumby\RouteResolver\RouteResolverServiceProvider',
    ........................
 ];
 
 'aliases' => [ 
    ......................
    'RouteResolver' => 'Crumby\RouteResolver\Facades\RouteResolver',
    ......................
 ];

Add file PackageResolver.php to your project

    <?php
    namespace App\Resolvers;

    use Crumby\RouteResolver\Contracts\ParamResolver as ParamResolver;
    use Crumby\RouteResolver\Contracts\ParamResolverCollection as ParamResolverCollection;
    use App\Content as Content;

    /**
     * Description of PackageResolver
     *
     * @author Andrei Vassilenko <avassilenko2@gmail.com>
     */
    class PackageResolver implements ParamResolver, ParamResolverCollection {
        protected $service;
        public function __construct(Content $content) {
            $this->service = $content;
        }
        public function collection($param=null) {
            return Content::fillIds($this->service->getIdsWithSameAttribute('content_group'), ['att' => 'content_locale', 'excl' => 'value']);
        }
        public function item($param=null) {
            return Content::fillIds([$this->service->id], ['att' => 'content_locale', 'excl' => 'value'])->first();
        }
        public function label($item=null) {
           return $item->title;
        }
        public function locale($item=null) {
            return $item->attr_value;    
        }
        public function segment($item=null) {
            return $item->slug;
        }
    }

Add route parameter and corresponding resolver class to config/route-resolver.php

return [
        .........................
        'package' => 'App\Resolvers\PackageResolver',
        ........................
];

when route resolve route /packages/{package} it calls Resolver Service and substitute last segment of url {package} with localized value returned by Resolver Class method segment(), in our example PackageResolver::segment().

Implement interface Crumby\RouteResolver\Contracts\ParamResolver.php

in file, for example: app/Resolvers/PackageResolver.php

Make sure the App\Resolvers\PackageResolver class exists in autoloader

Example of building all existing localized urls for language switcher:

$resolvers = \RouteResolver::getFromRequest()
// below returns something like /packages/{package}  
$uriWithParam = \Route::getCurrentRoute()->uri();
$allRoutes = \RouteResolver::resolveRouteCollection($uriWithParam, $resolvers);

test stability:

https://semver.mwl.be/#?package=crumby%2Froute-resolver&version=dev-master&minimum-stability=stable

统计信息

  • 总下载量: 106
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2017-08-16

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固