Bu hedefe farklı yöntemlerle ulaşılabilir,
1. BaseController'ı kullanma
İşleri kurmayı sevdiğim gibi, BaseController
Laravel'in kendi sınıfını genişleten bir sınıf oluşturuyorum Controller
ve orada çeşitli küresel şeyler kuruyorum . Diğer tüm denetleyiciler BaseController
Laravel'in Denetleyicisinden ziyade genişler.
class BaseController extends Controller
{
public function __construct()
{
//its just a dummy data object.
$user = User::all();
// Sharing is caring
View::share('user', $user);
}
}
2. Filtre Kullanımı
Tüm uygulama boyunca her istek üzerine görünümler için ayarlanan bir şey istediğinizi biliyorsanız, bunu talepten önce çalışan bir filtre aracılığıyla da yapabilirsiniz - Laravel'de Kullanıcı nesnesiyle bu şekilde ilgileniyorum.
App::before(function($request)
{
// Set up global user object for views
View::share('user', User::all());
});
VEYA
Kendi filtrenizi tanımlayabilirsiniz
Route::filter('user-filter', function() {
View::share('user', User::all());
});
ve basit filtre çağrısı yoluyla çağırın.
Sürüm 5'e Göre Güncelleme *
3. Ara Yazılım Kullanma
Kullanımı View::share
ilemiddleware
Route::group(['middleware' => 'SomeMiddleware'], function(){
// routes
});
class SomeMiddleware {
public function handle($request)
{
\View::share('user', auth()->user());
}
}
4. View Composer'ı Kullanma
View Composer, belirli verileri farklı şekillerde görüntülemek için bağlamaya da yardımcı olur. Değişkeni doğrudan belirli bir görünüme veya tüm görünümlere bağlayabilirsiniz. Örneğin, ihtiyaca göre görünüm oluşturucu dosyanızı saklamak için kendi dizininizi oluşturabilirsiniz. ve bu görünüm oluşturucu dosyasını Hizmet aracılığıyla görüntüleme ile etkileşim sağlar.
View composer yöntemi farklı bir yol kullanabilir, İlk örnek benzer görünebilir:
Bir App\Http\ViewComposers
dizin oluşturabilirsiniz .
Servis sağlayıcı
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class ViewComposerServiceProvider extends ServiceProvider {
public function boot() {
view()->composer("ViewName","App\Http\ViewComposers\TestViewComposer");
}
}
Bundan sonra, bu sağlayıcıyı "sağlayıcılar" bölümünün altındaki config / app.php'ye ekleyin.
TestViewComposer
namespace App\Http\ViewComposers;
use Illuminate\Contracts\View\View;
class TestViewComposer {
public function compose(View $view) {
$view->with('ViewComposerTestVariable', "Calling with View Composer Provider");
}
}
ViewName.blade.php
Here you are... {{$ViewComposerTestVariable}}
Bu yöntem yalnızca belirli Görünüm için yardımcı olabilir. Ancak ViewComposer'ı tüm görünümlerde tetiklemek istiyorsanız, bu tek değişikliği ServiceProvider'a uygulamalıyız.
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class ViewComposerServiceProvider extends ServiceProvider {
public function boot() {
view()->composer('*',"App\Http\ViewComposers\TestViewComposer");
}
}
Referans
Laravel Belgeleri
Daha Fazla Açıklama Laracast Bölümü
Benim açımdan hala belirsiz bir şey varsa, bana bildirin.