2016-04-04 24 views
1

, birden yöntemleri için geçirilen ortak rota parametreleri vardır. Bu parametrelerden bazıları, aynı parametreleri geçirmeyi ve bu parametreleri kullanan her bir denetleyici yönteminde aynı işlem yöntemlerini çağırmayı gerektiren bazı ekstra işlemlere (dizgi işleme) gereksinim duyar. Kodu çoğaltmak yerine, denetleyicimin içerdiği bir özellik ve denetleyicinin yapıcı yönteminde bu özelliğe yapılan çağrı var.laravel kontrolör yapıcı sorunu

Bu harika çalışıyor, ben sınıf özelliklerine bu parametreleri bağlayabilir ve hepsi benim yöntemlerle erişilebilir. Sorun, artisan route:list gibi denetleyicileri örnekleyen artisan komutları çalıştırırken ortaya çıkar. bu komutu çalıştırırken aşağıdaki hatayı alıyorum:

Call to a member function getParameter() on null

Ben esnaf çalıştırırken hiçbir Rota veya istek nesne olmadığından Route::current() bir çağrı null dönecektir çünkü bu olduğunu biliyorum, ama kendimi yorum yapmak zorunda bulmak Benim güzergahımdaki kodu sadece rotalarımın bir listesini almak için. Eminim ki ortaya çıkabilecek başka problemler de vardır.

Sorum bu daha temiz olması üstesinden nasıl, nedir? Şu anda düşünebildiğim tek çözüm, her bir denetleyici yönteminde parametre kayıt yöntemimi çağırmaktır, ancak bunu yapmak istemiyorum. Herhangi bir fikir?

+0

Bazı örnekler ekleyebiliyorsanız hoş olurdu. – imrealashu

+0

Bu oldukça basit bir soru, ben 'artisan' komutları ile çelişen olmadan' Route' ve benim kontrolörleri yapıcı işlevleri içinde 'Request' cephe, erişmek için bir yol gerekir. Bu durumda bir örnek gereksizdir. – samrap

+0

'if (php_sapi_name()! = 'Cli') {// İsteği ve Riute} 'yi kullanabilirsiniz. –

cevap

0

yerine özellikleri kullanmak yerine, her zaman diğer kontrolörler tarafından devralınacak ortak kod eklemek için Controller.php dosyayı değiştirebilir. Tüm denetleyicileriniz extends Controller, ortak işlevler kullanılabilir olduğundan, kodunuzda $this->getParameter() numaralı telefonu arayabilirsiniz.

+0

Lütfen, "Şu anda düşünebildiğim tek çözüm, her bir denetleyici yönteminde parametre kayıt yöntemimi çağırmaktır, ancak bunu yapmak istemiyorum" sorusunun sonunu okuyun. Ve evet, soyut Controller.php sınıfında bulunan özellikleri kullanıyorum – samrap