2013-07-03 17 views
8

Bunu, route.php dosyasına ekledim, ancak sayfanın kimlik doğrulama oturumunu kontrol etmesi bekleniyor, ancak çalışmıyor.Rota kaynakları, ataşmandan önce ayarlandı Laravel 4

Route::resource('ticket', 'TicketController', array('before' => 'auth')); 

Sonra başka bir şekilde denetleyici, işe gitmek. Çalışıyor.

class TicketController extends BaseController { 

public function __construct() 
{ 
    $this->beforeFilter('auth'); 
} 

nerede Rota :: kaynak(), bu mümkün argüman ne tür kabul etmek konusunda daha fazla belgelerine alabilirsiniz öğrenebilir miyim?

cevap

21

Tamam ... Cevabı buldum. Gördüğünüz gibi

satıcı \

\

yılında laravel \ framework \ src \ Illuminate \ Yönlendirme \ Router.php

public function resource($resource, $controller, array $options = array()) 
    { 
     // If the resource name contains a slash, we will assume the developer wishes to 
     // register these resource routes with a prefix so we will set that up out of 
     // the box so they don't have to mess with it. Otherwise, we will continue. 
     if (str_contains($resource, '/')) 
     { 
      $this->prefixedResource($resource, $controller, $options); 

      return; 
     } 

     // We need to extract the base resource from the resource name. Nested resources 
     // are supported in the framework, but we need to know what name to use for a 
     // place-holder on the route wildcards, which should be the base resources. 
     $base = $this->getBaseResource($resource); 

     $defaults = $this->resourceDefaults; 

     foreach ($this->getResourceMethods($defaults, $options) as $method) 
     { 
      $this->{'addResource'.ucfirst($method)}($resource, $base, $controller); 
     } 
    } 

protected function getResourceMethods($defaults, $options) 
    { 
     if (isset($options['only'])) 
     { 
      return array_intersect($defaults, $options['only']); 
     } 
     elseif (isset($options['except'])) 
     { 
      return array_diff($defaults, $options['except']); 
     } 

     return $defaults; 
    } 

, sadece tek only ve except argüman kabul edin.

Eğer route.php içinde aynı sonucu arşivlemek istiyorsanız

, bu

Route::group(array('before'=>'auth'), function() { 
    Route::resource('ticket', 'TicketController'); 
}); 
+0

aşağıdaki gibi yapılabilir Yoksa Denetçisi'nin beforeFilter() yöntemini kullanabilirsiniz. $ this-> beforeFilter ('auth', ['hariç' => 'imha']); '. [Bu bağlantıda] Devon'un yorumunu kontrol edin (https://laracasts.com/index.php/discuss/channels/general-discussion/how-can-i-declare-a-before-filter-on-a-routeresource) –