- Kategoriler
-
Başlıklar
- Laravel Ajax Kullanımı
- Adım 0 - Laraveli ayağa kaldırma
- Adım 1 - Gerekli NPM ayarlarının yapılması
- Adım 2 - Asset dosyalarının view'lara eklenmesi
- Adım 3 - Ajax controller dosyasının oluşturulması
- Adım 4 - Ajax isteğini gerçekleştirelim
- Adım 5 - Ajax isteğinde gönderilen datalara erişmek
- Adım 6 - Veritabanından veri çekmek
-
Paylaş
Laravel Ajax Kullanımı
Bu makalede sizlere, Laravel'in son sürümünde ajax kullanımıyla ilgili birkaç detay paylaşmak istiyorum. Bu makalede şunları öğrenmiş olacağız;
- Npm kullanımı
- Laravel Mix Asset Manager kullanımı
- Artisan ile Laravel'i ayağa kaldırma
- Artisan ile Controller oluşturma
- Laravel CSRF tokenı
Adım 0 - Laraveli ayağa kaldırma
Her şeyden önce laravel'i ayağa kaldırmak için şu komutu kullanın;
php artisan serve
Artık http://127.0.0.1:8000
adresinden giriş yaparak testinizi yapıp başlayabilirsiniz.
Adım 1 - Gerekli NPM ayarlarının yapılması
Laraveli yeni kurduysanız ve daha önce npm ile paketleri yüklemediyseniz ilk olarak bununla paylaşaım. Aşağıdaki komut ile paketleri yükleyelim.
npm install
Daha sonra ajax işlemlerinde jquery
kullanacağımız için jquery'de npm ile şu şekilde yükleyelim;
npm i jquery
Artık Laravel'in mix asset managerını kullanmaya hazırız. Özünde aslında yaptığı iş webpack'i kullanarak dosyalarımızı resource altından public altına belli işlemler yaparak atmak. Laravel kurulduğunda js ve sass dosyaları otomatik olarak yapılıyor ekstra bir ayar yapmanıza gerek yok. Tek yapmanız gereken şu komutu çalıştırarak değişiklikleri izlemek;
npm run watch
NPM ile ilgili yapacaklarımız bu kadar, artık resources/js
ve resources/sass
altındaki dosyalarımızda değişiklik yaptığımızda otomatik olarak bu algılanacak ve public altına çıkartılacak.
Adım 2 - Asset dosyalarının view'lara eklenmesi
Bunun içinde mix()
fonksiyonunu kullanacağız. Oluşturduğunuz layout blade template'inizde <head>
etiketinde uygun bir yere şunları ekleyin;
<head>
..
<script src="{{ mix('js/app.js') }}"></script>
<link rel="stylesheet" type="text/css" href="{{ mix('css/app.css') }}">
..
</head>
Editörde GörüntüleAdım 3 - Ajax controller dosyasının oluşturulması
Bunun için artisan komutunu çalıştırmamız yeterli.
php artisan make:controller AjaxController
Bu da bize app/Http/Controllers
altında AjaxController.php
adında bir php dosyası oluşturuyor. Bunu düzenlemek üzere açın ve public bir metod tanımlayın aşağıdaki gibi.
public function index()
{
return response()->json([
'name' => 'Tayfun',
'surname' => 'Erbilen'
], 200);
}
Bu controllerı kullanmak üzere route'a eklememiz gerekiyor. routes/web.php
dosyasını açın ve şunu ekleyin;
Route::post('/ajax', 'AjaxController@index')->name('ajax');
Artık ajax işlemleri için bir route'muz var ve kullanmaya hazırız.
Adım 4 - Ajax isteğini gerçekleştirelim
Evet artık resources/js/app.js
dosyamızı açıyoruz ve jquery kütüphanemizi dahil edip bir istek atıyoruz. Ama ondan önce, istek atacağımız url'i yine layout sayfamızda head etiketleri içine yazmamız gerekiyor. Ayrıca isteklerde token
göndermemiz gerekiyor, bu ikisini Adım 2
de uyguladığımız yere yerleştiriyoruz.
<script>
let ajax_url = "{{ route('ajax') }}",
token = "{{ csrf_token() }}";
</script>
Editörde Görüntüle
Ve artık app.js
dosyamızı açalım ve şu kodları yazalım.
import $ from "jquery"
$(function () {
$.post(ajax_url, {_token: token}, function(response){
console.log(response);
}, 'json');
});
Sonuç olarak bize controller dosyasında gönderdiğimiz ad-soyad bilgisini obje halinde geriye döndürecek. Yani evet, başarılı bir şekilde ajaxı kullanmayı başardık.
Adım 5 - Ajax isteğinde gönderilen datalara erişmek
Bunun için yine bir üst adımdaki kodumuzu şöyle değiştirelim;
let data = {
_token: token,
name: "Tayfun",
surname: "Erbilen",
web: "https://prototurk.com"
}
$.post(ajax_url, data, function(response){
console.log(response);
}, 'json');
Ve AjaxController
dosyamızda Request sınıfını kullanmamız gerekiyor. Yani şöyle değiştirelim;
public function index(Request $request)
{
$datas = $request->all(); // Tüm gönderilenleri dizi halinde alır
$web = $request->input('web'); // web ismiyle gönderilen datayı alır
return response()->json([
'name' => 'Tayfun',
'surname' => 'Erbilen'
], 200);
}
Tabi Request
sınıfını kullanmak için namespace
in altına şunu belirtmemiz gerekiyor;
use IlluminateSupportFacadesDB;
Adım 6 - Veritabanından veri çekmek
Bu aslında zorunlu bir adım değil ancak, veritabanından veri çekip ajax isteğinde geri döndürmek isteseydik, o zaman önce .env
dosyamızı açıp şuraları kendimize göre doldurmamız gerekiyordu.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=prototurk
DB_USERNAME=root
DB_PASSWORD=root
Daha sonra artık AjaxController dosyamızda şu şekilde bir kullanım yapabiliriz;
public function index()
{
$users = DB::table('uyeler')->limit(20)->get();
return response()->json($users, 200);
}
Tabi yine bunun için de namespace
den sonra şu tanımı eklemeniz gerekiyor.
use IlluminateSupportFacadesDB;
Hepsi bu kadar, daha fazlası için videoya gözatabilirsiniz :)