Yönlendirme (Routing)
Yabasi'nin güçlü yönlendirme sistemi ile temiz ve sürdürülebilir URL yapıları oluşturun
Temel Yönlendirme
Yabasi'deki en temel rotalar, bir URI ve bir callback fonksiyonu kabul eder. Rotalarınızı routes/web.php
dosyasında tanımlayabilirsiniz:
use Yabasi\Routing\Router;
$router->get('/greeting', function () {
return 'Hello, World!';
});
$router->get('/users/{id}', function ($id) {
return "User ID: " . $id;
});
Rota parametreleri otomatik olarak callback fonksiyonuna enjekte edilir.
HTTP Metodları
Kullanılabilir Router Metodları
Router, tüm yaygın HTTP metodlarını destekler. Her metod bir URI ve bir işleyici (handler) bekler:
// Basic route definitions
$router->get('/users', function () {
return 'List all users';
});
$router->post('/users', function () {
return 'Create new user';
});
$router->put('/users/{id}', function ($id) {
return "Update user: $id";
});
$router->delete('/users/{id}', function ($id) {
return "Delete user: $id";
});
HTTP Metodları Hızlı Başvuru
Controller ile Yönlendirme
Callback fonksiyonları yerine, controller sınıflarındaki metodlara yönlendirme yapabilirsiniz:
// UserController routes
$router->get('/users', 'UserController@index');
$router->post('/users', 'UserController@store');
$router->get('/users/{id}', 'UserController@show');
$router->put('/users/{id}', 'UserController@update');
$router->delete('/users/{id}', 'UserController@destroy');
Controller metodları, rota parametrelerini URL'deki sırayla alır.
Rota Grupları
Temel Gruplama
Rota grupları, birden fazla rotada ortak özellikleri (middleware, prefix vb.) paylaşmanızı sağlar:
// Basic middleware group
$router->group(['middleware' => ['auth']], function ($router) {
$router->get('/dashboard', 'DashboardController@index');
$router->get('/profile', 'ProfileController@show');
});
// Prefix and middleware combination
$router->group([
'prefix' => 'admin',
'middleware' => ['auth', 'admin']
], function ($router) {
$router->get('/users', 'AdminController@users');
$router->get('/settings', 'AdminController@settings');
});
Gruplar iç içe kullanılabilir ve özellikler otomatik olarak birleştirilir.
Grup Özellikleri
Middleware
$router->group(['middleware' => ['auth']], function ($router) {
// Protected routes
});
Gruba ait tüm rotalara middleware uygular.
Prefix
$router->group(['prefix' => 'api'], function ($router) {
// /api/... routes
});
Tüm rotalara ortak bir ön ek ekler.
İç İçe Gruplar
Grupları iç içe kullanarak karmaşık rota yapıları oluşturabilirsiniz:
$router->group(['middleware' => ['auth']], function ($router) {
// Authenticated routes
$router->group(['prefix' => 'admin'], function ($router) {
// Admin routes
$router->group(['middleware' => ['role:super-admin']], function ($router) {
// Super admin routes
$router->get('/system', 'AdminController@system');
$router->get('/logs', 'AdminController@logs');
});
});
});
Dikkat Edilmesi Gereken
Grup yapılarını fazla karmaşık hale getirmekten kaçının.
İyi Pratik
Gruplama mantığını modüler ve anlaşılır tutun.
Rota Parametreleri
Temel Parametreler
URL'lerden dinamik değerleri yakalamak için rota parametrelerini kullanabilirsiniz:
// Single parameter
$router->get('/posts/{id}', function ($id) {
return "Showing post: " . $id;
});
// Multiple parameters
$router->get('/posts/{post}/comments/{comment}', function ($postId, $commentId) {
return "Post: $postId, Comment: $commentId";
});
Parametreler fonksiyona tanımlandıkları sırayla aktarılır.
Controller'larda Parametre Kullanımı
Controller metodlarında rota parametrelerini aynı şekilde kullanabilirsiniz:
// PostController.php
class PostController extends Controller
{
public function show($id)
{
return Post::find($id);
}
public function showComment($postId, $commentId)
{
return Comment::where('post_id', $postId)
->find($commentId);
}
}
Form Method Spoofing
HTML formları doğrudan PUT, PATCH veya DELETE isteklerini desteklemez. Bu metodları kullanmak için method spoofing kullanmanız gerekir:
<form action="/posts/1" method="POST">
<!-- Method Spoofing Field -->
<input type="hidden" name="_method" value="PUT">
<!-- CSRF Token -->
{{ csrf_field()|raw }}
<!-- Form Fields -->
<input type="text" name="title">
<textarea name="content"></textarea>
<button type="submit">Update Post</button>
</form>
_method
alanı, formun gerçek HTTP metodunu belirtir.
Desteklenen HTTP Metodları
CSRF Koruması
Yabasi, uygulamanızı Cross-Site Request Forgery (CSRF) saldırılarına karşı otomatik olarak korur. Her form gönderiminde bir CSRF token'ı eklemeniz gerekir:
<form method="POST" action="/profile">
<!-- Using the csrf_field helper -->
{{ csrf_field()|raw }}
<!-- Or manually -->
<input type="hidden" name="_csrf_token" value="{{ csrf_token() }}">
<!-- Form fields -->
</form>
Otomatik Doğrulama
Tüm POST, PUT, PATCH ve DELETE istekleri otomatik olarak CSRF token kontrolünden geçer.
AJAX İstekleri
// Add to AJAX headers
'X-CSRF-TOKEN': '{{ csrf_token() }}'
Önemli Güvenlik Notu
CSRF token'ı olmayan form gönderimleri otomatik olarak reddedilir ve 419 hatası döndürülür.
Sonraki Adımlar
Yönlendirme sistemini öğrendiniz, şimdi bu konularla devam edin:
Controllers
Rota mantığınızı organize edin ve controller'ları etkili kullanın
Middleware
HTTP isteklerini filtreleme ve işleme mantığını öğrenin
Form Validation
Gelen istekleri doğrulama ve kontrol etme
API Geliştirme İpucu
API rotalarınızı /api
prefix'i altında gruplamayı unutmayın.
Daha Fazla Bilgi
Detaylı örnekler ve ileri seviye kullanımlar için resmi Yabasi dokümantasyonunu inceleyin.