2013-01-19 18 views
5

Laravel 4 paketimde denetleyicilere sahip olmak istiyorum, ancak yönlendirmeyi işe yaratamam.Paket Denetleyicileri 4

Laravel 4 belgesindeki paket yönergelerini takip ettim ve route.php dosyasının denetleyici olmayan yollarla çalışmasını sağladım.

Lütfen birisi bana paket denetleyicilerinin Laravel 4'te nasıl çalışacaklarına dair bazı talimatlar verebilir, çok memnun olur.

Şimdiden teşekkürler.

Lars

paketin servis sağlayıcı olarak
// EDIT: 

// routes.php 

    Route::get('admin', 'Package::[email protected]'); // Does not work 

    Route::get('admin', function(){ // Works fine 
     return 'Dashboard'; 
    }) 
+0

sizin routes.php kodu Buyurun – Laurence

+0

denedi ettiğini gösteren sonrası Lütfen :) –

+0

Hey Bunu işe almayı başardın mı? Öyleyse. Sollution ile bir cevap yazabilir misin? – DonSeba

cevap

3

Bunu Ad alanı çok

Route::get('/admin', 'PackageNS\Package\Controllers\[email protected]'); 

veya var olan Kontrolörü başvurmak gerekir hatta

Route::controller('PackageNS\Package\Controllers\AdminController', 'admin'); 
+0

Bu bana yardımcı oldu, ancak yine de hata alıyorum çünkü oluşturduğum denetleyici artık bulamayacağı temel denetleyiciyi genişletiyor. FatalErrorException: Error: Class 'PackageNS \ Package \ BaseController' bulunamadı '. Muhtemelen 'use path \ to \ basecontroller;' ya da benzer bir şey eklemem gerekiyor, ancak temel denetleyicinin yolunu bilmiyorum.Teşekkürler –

+2

@Al_, Denetleyicinin tam ad yolunu eklemeniz veya eklemeniz için bir 'use' yönergesi kullanmanız gerekir. 'Use Illuminate \ Routing \ Controllers \ Controller' veya' extends \ Illuminate \ Routing \ Controllers \ Controller' –

+0

Teşekkür ederim Kevin –

2

, kendi yolları dosya dahil ettik? L4'ün rota dosyasını otomatik olarak yüklediğine inanmıyorum. Bunu bir yere yapabilirsin ama bunun en uygun yer olduğunu sanıyorum.

public function register() 
{ 
    $this->package('vendor/pkgname'); 
    require __DIR__.'/../routes.php'; 
} 
+0

Cevabınız için teşekkürler, ancak rota dosyamı paketimin servis sağlayıcısına ekledim. Denetleyici olmayan rotalar burada iyi çalışıyor. –

-1

mü bunu:

composer dump-autoload 

autoloader o parlak yeni sınıfları hakkında anlatılması gerekiyor. Ayrıca, web sunucusu günlüklerini hatalar için kontrol etmenizi öneririm.

10

Durumunuzun ayrıntılarını bilmiyorum, ya da bu sorunu gidermek için "uygun" yol olup olmadığını bilmiyorum, ama aynı sorunla karşılaştığımdan nasıl çözdüğümü paylaşacağımı düşündüm .

/src 
    /Vendor 
     /Package 
      PackageServiceProvider.php 
    /config 
    /controllers 
    /lang 
    /migrations 
    /views 
/tests 
/public 

Sonra, benim paketin composer.json özdevinimli_yükle sınıf haritaya kontrolörleri klasörü eklendi: benim dizin yapısı aşağıdaki gibidir ki

Ben, kontrolörler alt dizininde paketim denetleyicileri koydu.

{ 
    "name": "kevin-s-perrine/my-first-packge", 
    "description": "", 
    "authors": [ 
     { 
      "name": "Kevin S. Perrine", 
      "email": "[email protected]" 
     } 
    ], 
    "require": { 
     "php": ">=5.3.0", 
     "illuminate/support": "4.0.x" 
    }, 
    "autoload": { 
     "classmap": [ 
      "src/migrations", 
      "src/controllers" 
     ], 
     "psr-0": { 
      "KevinSPerrine\\MyFirstPackage": "src/" 
     } 
    }, 
    "minimum-stability": "dev" 
} 

Son olarak, paketin kök dizininde composer dump-autoload koştu ve ardından yolları dosyasında adıyla kontrolörü başvurur.

Route::get('myfirstpackage', '[email protected]'); 
+0

Bu cevabın daha iyi olduğunu düşünüyorum. – DonSeba

İlgili konular