Xpressengine\Routing\ModuleValidator::matches PHP Method

matches() public method

Validate a given rule against a route and request.
public matches ( Illuminate\Routing\Route $route, Illuminate\Http\Request $request ) : boolean
$route Illuminate\Routing\Route laravel route
$request Illuminate\Http\Request laravel request
return boolean
    public function matches(Route $route, Request $request)
    {
        if (!$this->canReview($route, $request)) {
            return static::THIS_IS_NOT_INSTANCE_ROUTE;
        }
        try {
            $instanceRoute = $this->getInstanceRoute($request);
            $routeSource = $this->getRouteModule($route);
            $instanceSource = $instanceRoute->module;
            if ($instanceSource !== $routeSource) {
                return static::NOT_MATCH_INSTANCE_ROUTE_SOURCE;
            } else {
                /**
                 * @var XeRequest $request
                 */
                $this->setInstanceConfig($instanceRoute, $request);
                return static::INSTANCE_ROUTE_MATCHED;
            }
        } catch (\Exception $e) {
            return false;
        }
    }

Usage Example

 /**
  * testBoardMatchUri
  *
  * @return void
  */
 public function testBoardMatchUri()
 {
     list($routeRepo, $menuHandler, $themeHandler, $siteHandler, $route, $request) = $this->getMocks();
     $moduleValidator = new ModuleValidator();
     $moduleValidator->boot($routeRepo, $menuHandler, $themeHandler, $siteHandler);
     $request->shouldReceive('segment')->with(1)->andReturn('board');
     $route->shouldReceive('getAction')->andReturn(['as' => 'test.root.match', 'module' => 'module/pluginB@page']);
     $dummyItem = m::mock('Xpressengine\\Menu\\MenuItem');
     $route->shouldReceive('uri')->andReturn('freeboard');
     $route->shouldReceive('setAction')->andReturn($route);
     $menuHandler->shouldReceive('getItem')->andReturn($dummyItem);
     $menuHandler->shouldReceive('getMenuItemTheme')->andReturn('defaultTheme');
     $result = $moduleValidator->matches($route, $request);
     $this->assertEquals(true, $result);
 }