2016-04-11 45 views
1

varsayalım ben routes.php dosyasında bu rota tanımı var:ekran yolları ve laravel bir liste olarak alt yolları var

Route::group(
      array (
       'prefix' => 'admin' 
      ), 
      function() { 

         Route::group(['prefix' => 'user'], function() { 
          Route::get('usersData', ['as' => 'usersData', 'uses' => '[email protected]']); 
          Route::get('getOrgLevelAsJson/{user_id}', ['uses' => '[email protected]']); 
         }); 
         Route::resource('/user', 'UserController'); 

         Route::group(['prefix' => 'role'], function() { 
          Route::get('rolesData', ['as' => 'rolesData', 'uses' => '[email protected]']); 
          Route::post('applyPerms', ['as' => 'applyPerms', 'uses' => '[email protected]']); 
         }); 
         Route::resource('/role', 'RoleController'); 

        } 
       ); 
      } 
     ); 

Ve şimdi nedense bu yolları görüntülemek istediğiniz ve bir sırasız liste olarak alt yolları var böyle:

<ul> 
    <li>admin/user 
     <ul> 
      <li>usersData</li> 
      <li>getOrgLevelAsJson/{user_id}</li> 
      <li>create</li> 
      <li>user/{user}</li> 
      <li>{user}/edit</li> 
     </ul> 
    </li> 

    <li>admin/role 
     <ul> 
      <li>applyPerms</li> 
      <li>rolesData</li> 
      <li>create</li> 
      <li>role/{role}</li> 
      <li>role/{role}/edit</li> 
     </ul> 
    </li> 
</ul> 

Ben hepsi tanımlanmış güzergah almak için Route::getRoutes() kullanabilirsiniz biliyorum ama o alt yolları bir rota alabilirsiniz bilmiyorum.

Laravel 5.2 kullanıyorum.

cevap

1
<?php 
$routeCollection = Route::getRoutes(); 
$mainRoutes = []; 
$allRoutes = []; 
foreach ($routeCollection as $value) { 
    array_push($allRoutes, $value->getPath()); 
    $url = explode('/', $value->getPath()); 
    if (!in_array($url[0], $mainRoutes)) { 
     array_push($mainRoutes, $url[0]); 
    } 
} 
?> 
<ul> 
    @foreach($mainRoutes as $main_route) 
     <li> 
      {{$main_route}} 
      <ul> 
       <?php 
       foreach ($allRoutes as $route) { 
       $url = explode('/', $route); 
       if($main_route == $url[0]){ 
       ?> 
       <li>{{url($route)}}</li> 
       <?php 
       } 
       } 
       ?> 

      </ul> 
     </li> 
    @endforeach 
</ul> 
+0

Teşekkürler @Adam, bu gerçek bir çözümdü. harikasınız –

+0

hoşgeldiniz :) –