2016-07-20 5 views
1

Ich habe eine interessante Situation. Ich habe caffeinated modules installiert und ein Modul namens Blog (slug, blog) erstellt. Es gibt eine Standard-Route-Datei mitLaravel koffeinhaltigen Module Route nicht passend

Route::group(['prefix' => 'blog'], function() 
{ 
    Route::get('/', function() 
    { 
     dd('This is the Blog module index page.'); 
    }); 
}); 

Also, wenn ich http://localhost:8000/blog gehen würde ich erwarten, dass der Text, um zu sehen, aber die Strecke nicht übereinstimmt. Wenn ich noch etwas hinzufüge, funktioniert es. Zum Beispiel habe ich

Route::get('/test', function() 
{ 
    dd('Test.'); 
}); 

auf die Route-Gruppe und als ich nach http://localhost:8000/blog/test gehe es funktioniert, ich sehe-Test. Aber das Blog funktioniert immer noch nicht.

Nun wird es noch seltsames, fügte ich die Strecke Gruppe meiner Standard-Routen-Datei:

Route::group(['prefix' => 'blog'], function() 
{ 
    Route::get('/', function() 
    { 
     dd('test'); 
    }); 
}); 

Und die Strecke gearbeitet, irgendwie. Wenn ich gehe jetzt zu http://localhost:8000/blog ich den Originaltext von der Route in dem Modul zu sehen, "This is the Blog module index page."

Warum in der Haupt app/Http/routes Datei bewirken, dass die Route in der Blogs Modul die Gruppe wieder würde das Hinzufügen plötzlich anfangen zu arbeiten? Warum funktioniert die Route im Modul Blogs überhaupt nicht?

Ich fragte mich, ob es vielleicht nur ein Problem mit diesem Modul war, also habe ich versucht, eine andere zu testen, aber ich hatte genau die gleichen Ergebnisse mit einem Modul mit einem anderen Namen.

Die Module und Routenliste richtig, dies ist die Ausgabe von module:list und route:list, während der Fehler auftritt.

Module

+------+----------------+-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+ 
| # | Name   | Slug  | Description                                       | Status | 
+------+----------------+-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+ 
| 9001 | Menu   | menu  | Standard bootstrap menu.                                    | Enabled | 
| 9001 | Module Manager | modman  | Manages modules installed in the site, holding the name and namespace of the module. It also determines which area a module is for (e.g. content, utility, stats etc.) | Enabled | 
| 9001 | Image   | image  | A content area for a single static image.                                | Enabled | 
| 9001 | Content  | content  | Core content module that uses a simple text area and a WYSIWYG editor.                         | Enabled | 
| 9001 | Category  | category | Creates different categories for use with blog posts                             | Enabled | 
| 9001 | CommonArea  | common-area | Common areas are groups of content that are repeated on multiple pages. The two default areas are header and footer.             | Enabled | 
| 9001 | Blog   | blog  | Handles blog articles as pages and has blog preview and menu content types.                       | Enabled | 
+------+----------------+-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+ 

Routen

+--------+--------------------------------+-------------------------------------+--------------------------+--------------------------------------------------------------------------+------------------------------------------------------------+ 
| Domain | Method       | URI         | Name      | Action                 | Middleware             | 
+--------+--------------------------------+-------------------------------------+--------------------------+--------------------------------------------------------------------------+------------------------------------------------------------+ 
|  | GET|HEAD      | acp         | AcpHome     | App\Http\Controllers\[email protected]        | web,auth             | 
|  | GET|HEAD      | acp/blog       | AcpBlogPosts    | App\Http\Controllers\[email protected]        | web,auth             | 
|  | POST       | acp/blog/create      | AcpCreateBlog   | App\Http\Controllers\[email protected]      | web,auth             | 
|  | GET|HEAD      | acp/blog/create      | AcpCreateBlogForm  | App\Http\Controllers\[email protected]       | web,auth             | 
|  | GET|HEAD      | acp/blog/{blog}/delete    | AcpDeleteBlog   | App\Http\Controllers\[email protected]       | web,auth             | 
|  | GET|HEAD      | acp/blog/{blog}/update    | AcpUpdateBlogForm  | App\Http\Controllers\[email protected]       | web,auth             | 
|  | POST       | acp/blog/{blog}/update    | AcpUpdateBlog   | App\Http\Controllers\[email protected]      | web,auth             | 
|  | GET|HEAD      | acp/category      | AcpCategories   | App\Http\Controllers\[email protected]       | web,auth             | 
|  | POST       | acp/category/create     | AcpCreateCategory  | App\Http\Controllers\[email protected]     | web,auth             | 
|  | GET|HEAD      | acp/category/create     | AcpCreateCategoryForm | App\Http\Controllers\[email protected]      | web,auth             | 
|  | GET|HEAD      | acp/category/{category}/delete  | AcpDeleteCategory  | App\Http\Controllers\[email protected]      | web,auth             | 
|  | POST       | acp/category/{category}/update  | AcpUpdateCategory  | App\Http\Controllers\[email protected]     | web,auth             | 
|  | GET|HEAD      | acp/category/{category}/update  | AcpUpdateCategoryForm | App\Http\Controllers\[email protected]      | web,auth             | 
|  | GET|HEAD      | acp/content       | AcpContent    | App\Http\Controllers\[email protected]       | web,auth             | 
|  | GET|HEAD      | acp/content-area/{content}   | AcpContentAreaForm  | App\Http\Controllers\[email protected]      | web,auth             | 
|  | POST       | acp/content-area/{content}   | AcpContentArea   | App\Http\Controllers\[email protected]      | web,auth             | 
|  | GET|HEAD      | acp/content/menus     | AcpContentMenus   | App\Http\Controllers\[email protected]       | web,auth             | 
|  | GET|HEAD      | acp/page/column-layout/{template} | AcpGetColumnLayout  | App\Http\Controllers\[email protected]      | web,auth             | 
|  | POST       | acp/page/create      | AcpCreatePage   | App\Http\Controllers\[email protected]      | web,auth             | 
|  | GET|HEAD      | acp/page/create      | AcpCreatePageForm  | App\Http\Controllers\[email protected]       | web,auth             | 
|  | GET|HEAD      | acp/page/new-row     | AcpGetNewRow    | App\Http\Controllers\[email protected]       | web,auth             | 
|  | POST       | acp/page/{id}/update    | AcpUpdatePage   | App\Http\Controllers\[email protected]      | web,auth             | 
|  | GET|HEAD      | acp/page/{id}/update    | AcpUpdatePageForm  | App\Http\Controllers\[email protected]       | web,auth             | 
|  | GET|HEAD      | acp/permissions      | AcpPermissions   | App\Http\Controllers\[email protected]      | web,auth             | 
|  | POST       | acp/permissions/create    | AcpPermissionsCreate  | App\Http\Controllers\[email protected]     | web,auth             | 
|  | GET|HEAD      | acp/permissions/create    | AcpPermissionsCreateForm | App\Http\Controllers\[email protected]     | web,auth             | 
|  | GET|HEAD      | acp/permissions/{permission}/delete | AcpPermissionsDelete  | App\Http\Controllers\[email protected]      | web,auth             | 
|  | POST       | acp/permissions/{permission}/update | AcpPermissionsUpdate  | App\Http\Controllers\[email protected]     | web,auth             | 
|  | GET|HEAD      | acp/permissions/{permission}/update | AcpPermissionsUpdateForm | App\Http\Controllers\[email protected]     | web,auth             | 
|  | GET|HEAD      | acp/roles       | AcpRoles     | App\Http\Controllers\[email protected]       | web,auth             | 
|  | POST       | acp/roles/create     | AcpRolesCreate   | App\Http\Controllers\[email protected]      | web,auth             | 
|  | GET|HEAD      | acp/roles/create     | AcpRolesCreateForm  | App\Http\Controllers\[email protected]      | web,auth             | 
|  | GET|HEAD      | acp/roles/{role}/delete    | AcpRolesDelete   | App\Http\Controllers\[email protected]       | web,auth             | 
|  | POST       | acp/roles/{role}/update    | AcpRolesUpdate   | App\Http\Controllers\[email protected]      | web,auth             | 
|  | GET|HEAD      | acp/roles/{role}/update    | AcpRolesUpdateForm  | App\Http\Controllers\[email protected]      | web,auth             | 
|  | GET|HEAD      | acp/templates      | AcpTemplates    | App\Http\Controllers\[email protected]      | web,auth,advanced           | 
|  | GET|HEAD      | acp/templates/create    | AcpTemplatesCreateForm | App\Http\Controllers\[email protected]     | web,auth,advanced           | 
|  | POST       | acp/templates/create    | AcpTemplatesCreate  | App\Http\Controllers\[email protected]     | web,auth,advanced           | 
|  | GET|HEAD      | acp/templates/{template}/delete  | AcpTemplatesDelete  | App\Http\Controllers\[email protected]      | web,auth,advanced           | 
|  | POST       | acp/templates/{template}/update  | AcpTemplatesUpdate  | App\Http\Controllers\[email protected]     | web,auth,advanced           | 
|  | GET|HEAD      | acp/templates/{template}/update  | AcpTemplatesUpdateForm | App\Http\Controllers\[email protected]     | web,auth,advanced           | 
|  | GET|HEAD      | acp/users       | AcpUsers     | App\Http\Controllers\[email protected]       | web,auth             | 
|  | POST       | acp/users/create     | AcpUsersCreate   | App\Http\Controllers\[email protected]      | web,auth             | 
|  | GET|HEAD      | acp/users/create     | AcpUsersCreateForm  | App\Http\Controllers\[email protected]      | web,auth             | 
|  | GET|HEAD      | acp/users/{user}/delete    | AcpUsersDelete   | App\Http\Controllers\[email protected]       | web,auth             | 
|  | GET|HEAD      | acp/users/{user}/update    | AcpUsersUpdateForm  | App\Http\Controllers\[email protected]      | web,auth             | 
|  | POST       | acp/users/{user}/update    | AcpUsersUpdate   | App\Http\Controllers\[email protected]      | web,auth             | 
|  | GET|HEAD      | blog        |       | Closure                 | web              | 
|  | GET|HEAD      | blog/test       |       | Closure                 | web              | 
|  | GET|HEAD      | category       |       | Closure                 | web              | 
|  | GET|HEAD      | common-area       |       | Closure                 |               | 
|  | GET|HEAD      | content        |       | Closure                 |               | 
|  | GET|HEAD      | image        |       | Closure                 | web              | 
|  | GET|HEAD      | laravel-filemanager     |       | Unisharp\Laravelfilemanager\controllers\[email protected]    | web,auth,\Unisharp\Laravelfilemanager\middleware\MultiUser | 
|  | GET|HEAD      | laravel-filemanager/crop   |       | Unisharp\Laravelfilemanager\controllers\[email protected]   | web,auth,\Unisharp\Laravelfilemanager\middleware\MultiUser | 
|  | GET|HEAD      | laravel-filemanager/cropimage  |       | Unisharp\Laravelfilemanager\controllers\[email protected]  | web,auth,\Unisharp\Laravelfilemanager\middleware\MultiUser | 
|  | GET|HEAD      | laravel-filemanager/delete   |       | Unisharp\Laravelfilemanager\controllers\[email protected]  | web,auth,\Unisharp\Laravelfilemanager\middleware\MultiUser | 
|  | GET|HEAD      | laravel-filemanager/deletefolder |       | Unisharp\Laravelfilemanager\controllers\[email protected] | web,auth,\Unisharp\Laravelfilemanager\middleware\MultiUser | 
|  | GET|HEAD      | laravel-filemanager/doresize  |       | Unisharp\Laravelfilemanager\controllers\[email protected] | web,auth,\Unisharp\Laravelfilemanager\middleware\MultiUser | 
|  | GET|HEAD      | laravel-filemanager/download  |       | Unisharp\Laravelfilemanager\controllers\[email protected] | web,auth,\Unisharp\Laravelfilemanager\middleware\MultiUser | 
|  | GET|HEAD      | laravel-filemanager/folders   |       | Unisharp\Laravelfilemanager\controllers\[email protected]  | web,auth,\Unisharp\Laravelfilemanager\middleware\MultiUser | 
|  | GET|HEAD      | laravel-filemanager/jsonitems  |       | Unisharp\Laravelfilemanager\controllers\[email protected]   | web,auth,\Unisharp\Laravelfilemanager\middleware\MultiUser | 
|  | GET|HEAD      | laravel-filemanager/newfolder  |       | Unisharp\Laravelfilemanager\controllers\[email protected] | web,auth,\Unisharp\Laravelfilemanager\middleware\MultiUser | 
|  | GET|HEAD      | laravel-filemanager/rename   |       | Unisharp\Laravelfilemanager\controllers\[email protected]  | web,auth,\Unisharp\Laravelfilemanager\middleware\MultiUser | 
|  | GET|HEAD      | laravel-filemanager/resize   |       | Unisharp\Laravelfilemanager\controllers\[email protected]  | web,auth,\Unisharp\Laravelfilemanager\middleware\MultiUser | 
|  | GET|HEAD|POST|PUT|PATCH|DELETE | laravel-filemanager/upload   |       | Unisharp\Laravelfilemanager\controllers\[email protected]   | web,auth,\Unisharp\Laravelfilemanager\middleware\MultiUser | 
|  | GET|HEAD      | login        |       | App\Http\Controllers\Auth\[email protected]     | web,guest             | 
|  | POST       | login        |       | App\Http\Controllers\Auth\[email protected]       | web,guest             | 
|  | GET|HEAD      | logout        |       | App\Http\Controllers\Auth\[email protected]       | web              | 
|  | GET|HEAD      | menu        |       | Closure                 |               | 
|  | GET|HEAD      | modman        |       | Closure                 | web              | 
|  | POST       | password/email      |       | App\Http\Controllers\Auth\[email protected]   | web,guest             | 
|  | POST       | password/reset      |       | App\Http\Controllers\Auth\[email protected]      | web,guest             | 
|  | GET|HEAD      | password/reset/{token?}    |       | App\Http\Controllers\Auth\[email protected]    | web,guest             | 
|  | POST       | register       |       | App\Http\Controllers\Auth\[email protected]      | web,guest             | 
|  | GET|HEAD      | register       |       | App\Http\Controllers\Auth\[email protected]   | web,guest             | 
|  | GET|HEAD      | {page?}        | Page      | App\Http\Controllers\[email protected]        | web              | 
+--------+--------------------------------+-------------------------------------+--------------------------+--------------------------------------------------------------------------+------------------------------------------------------------+ 
+0

Was dies genau bedeutet 'aber die Route nicht – revo

+0

@revo nicht match' Wenn ich auf der Strecke zu sehen es nicht, mir den Text nicht zeigt, statt es nach oben endet an meinem fang alle route gleich am ende. – Styphon

+0

Sind Sie sicher, dass es sich nicht um einen Konflikt handelt, der durch dieselbe zuvor definierte Route verursacht wird? (Z. B. irgendwo in Laravel 'routes.php') – revo

Antwort

0

Leider kann ich nicht einen Kommentar posten, aber nicht php artisan route:list etwas Nützliches offenbaren, dh. sehen Sie eine /blog Route oder /blog/ vielleicht.

+0

Ja, ich sehe eine Blogroute. Es ist aufgeführt, aber es wird immer noch nicht angezeigt. – Styphon

+0

Es ist eine seltsame, haben Sie vielleicht eine verwirrte Cache-Route-Datei, vielleicht deaktivieren Sie den Cache 'php Artisan Route: clear'. Haben Sie auch das gleiche Problem mit '/ content' und'/category' –

+0

Ich werde versuchen, die Route klar am Morgen, aber ja das passiert für jedes Modul. – Styphon

0

Haben Sie schon einmal versucht, eine zusätzliche Route vor / Route hinzuzufügen?

Route::group(['prefix' => 'blog'], function() 
{ 
    Route::get('/check', function() 
    { 
     dd('check'); 
    }); 


    Route::get('/', function() 
    { 
     dd('test'); 
    }); 
}); 

Versuchen Sie es. Hoffnung wird für dich arbeiten.

+0

Ja, ich habe das versucht. Die zusätzliche Route funktioniert (ich würde sehen, überprüfen), aber die Index-Route wird immer noch nicht. – Styphon

0

Ihre Route wird registriert, wie aus dem route:list-Ausgang ersichtlich ist.

Das einzige Problem, das ich sehen kann, ist, dass es eine {page?} Route gibt, die, wenn sie vor blog definiert wird, aufgerufen wird, wenn Sie /blog besuchen.

Versuchen Sie dd() auf Ihrer Seitenroute.

+0

'{Seite?}' Ist die letzte definierte Route. Es ist ein Haken am Ende. Ich weiß, dass das der Fall ist, weil '/ blog/test' gut funktioniert. – Styphon

+0

@Styphon '{page?}' Fängt nur das erste Segment ein.Es fängt also alle Routen mit nur einem Segment auf, nicht Multisegment. So wird "/ blog" auf dieser Route nicht "/ blog/test" zugeordnet. Probieren Sie eine nicht definierte Multisegment-Route aus und prüfen Sie, ob sie mit der Route "{page?}" Übereinstimmt. – z3r0ck

0

Namespace Parameter in Ihrem Array Gruppenattribut innerhalb der Gruppe der Namespace für alle Steuerungen angeben

Route::group(['namespace' => 'blog', 'prefix' => 'blog'], function() 
{ 
    Route::get('/', function() 
    { 
     dd('This is the Blog module index page.'); 
    }); 
}); 
0

Strecke {Seite?} bevor Module und Spiel zu einer ausgeführt wird Routen in Ihren Modulen segmentieren.

Führen Sie diesen Weg, um Ihre Routen

Route::get('routes', function() { 
    $router = $this->app->make('router'); 
    $routes = $router->getRoutes(); 

    foreach($routes AS $route) 
    { 
     dump($route->uri()); 
    } 
    dd($routes); 
}); 

Für Route zu sehen:

Route::get('{slug?}', '[email protected]') 
    ->name('page') 
    ->where('slug', '[a-zA-Z0-9_]*'); 

In meiner app ich Datei App/Routing/Matching/SlugValidator.php

erstellt haben
<?php namespace App\Routing\Matching; 

use Illuminate\Http\Request; 
use Illuminate\Routing\Route; 
use Illuminate\Routing\Matching\ValidatorInterface; 
use App\Models\Page; 

class SlugValidator implements ValidatorInterface 
{ 
    /** 
    * Validate a given rule against a route and request. 
    * 
    * @param \Illuminate\Routing\Route $route 
    * @param \Illuminate\Http\Request $request 
    * @return bool 
    */ 
    public function matches(Route $route, Request $request) 
    { 
     if ($route->getName() == 'page') { 
      return (bool) $page = Page::where('slug', '=', $request->segment(1)) 
       ->where('status', '=', PAGE::STATUS_ACTIVE)->count(); 
     } 

     return true; 
    } // matches() 
} // SlugValidator 

Und in App/Http/Providers/Ro uteServiceProvider.php in Boot-Funktion:

use Illuminate\Routing\Route as R; 
use App\Routing\Matching\SlugValidator; 

[ ....] 

public function boot() 
{ 
    R::$validators = array_merge(R::getValidators(), [new SlugValidator]); 
    parent::boot(); 
}