Laravel Controller’ını Laravel Dışından Çalıştırmak

Merhaba bu makalede laravel ile geliştirme yaparken işinize olukça yarayacağını düşündüğüm bir konudan bahsedeceğim.

Bazen laravel dışındaki bazı bileşenleri kullanırken bileşenin back-and tarafında kullanıcının üye olup olmadığını veya yetkisinin ne olduğunu öğrenmem gerekiyor. Bu durumlarda aşağıdaki adımları izleyerek kendinize ait bit kod oluşturabilirsiniz.

Bu işlemi gerçekleştirebilmek için 1 controller ve içerisinde 1 metod ve bunları dışarı açmak için bir route oluşturmak gerekiyor.

Route dosyamızın içerisine aşağıdaki veya sizin adını değiştirmeyi isteyeceğiniz şekilde bir tanımlama yapıyoruz.

Route::get('sonucual','[email protected]');

Şimdi sırada bu route için bir Controller ve içine işlem yapmak istediğimiz fonksiyonu ekliyoruz.

Ben ziyaretçinin üye olup olmadığını kontrol ettirdim ve buna göre bir sonuç döndürdüm. Siz istediğiniz kodlamayı yapabilirsiniz.

use Illuminate\Support\Facades\Auth; // eklemediyseniz controller'in en başına php etiketin'den sonra bu namespace'yi ekleyin


//controller'in içine işimize yarayan fonksiyonu koyuyoruz
function sonuc(){
    return Auth::check() ? 'uye':'ziyaretci';
}

Bu kodları ekledikten sonra taratıcınıza siteadi.com/sonucal yazdığınızda ekranda üye olduğunuz veya üye olmadığınız yazmalı.

Şimdi sırada bu fonksiyonu laravel dışından çağırmak var. Bunun için laravel projemizin public klasöründeki index.php dosyasının yapısını incelediğimizde laravel’in requestleri nasıl yakaladığını görüyoruz. Biz’de kendi request’imizi oluşturarak laravel içinde istediğimiz fonksiyonu çalıştırabiliriz.

default index.php şu veya benzer şekilde olacakdır

<?php
define('LARAVEL_START', microtime(true));

require __DIR__.'/../vendor/autoload.php';

$app = require_once __DIR__.'/../bootstrap/app.php';


$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture()
);

$response->send();

$kernel->terminate($request, $response);

Öncelikle kodları açıklayalım require metodu ile otomatik class yükleyiciyi başlatıyor ve sonrasında laravel’in kernel’ini başlatıyor. Buraya kadar sabit kalıcak. Sonrasında bir request oluşturuyor ve bunu handle metodu ile işliyor. Burada request’i capture metodu ile tarayıcıdan alıyor, biz ise create metodu ile kendimize göre aşağıdaki gibi oluşturucaz ve sonrasında cevabı send metodu ile ekrana yazdırmak gerine getContent metodu ile değişkene atayıp controller’dan aldığımız sonucu istediğimiz şekilde kullanacağız.

<?php

function islemyap(){
    define('LARAVEL_START', microtime(true));

    require __DIR__.'/../vendor/autoload.php';

    $app = require_once __DIR__.'/../bootstrap/app.php';

    $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

    $response = $kernel->handle(
        // burada capture fonksiyonu yerine create kullanarak kendi çalışmasını istediğimiz request'i yazıyoruz
        $request = Illuminate\Http\Request::create('/sonucual','GET',[],$_COOKIE)
    );
    
    //send fonksiyonu ile sonucu ekrana yazmak yerine getContent ile değişkene atıyoruz
    $sonuc = $response->getContent();
  
    $kernel->terminate($request, $response);

    return $sonuc;//sonucu döndürüyoruz
}

bu fonksiyondaki dosya yollarını projenize göre düzenleyerek çok rahat bir şekilde laravel de istediğiniz controller’i dışarıdan çalıştırarak sayfayı açan kullanıcının üye olup olmadığını öğrenebilirsiniz. Örneğin ben kcfinder’de kullanıcının üye bilgilerini almak için kullanmıştım.Kcfinder kendi php config dosyasına sahip ve laravel içinden değilde ayrı bir sayfa üzerinden çalışıyor.

Eğer bu konuda daha fazla şey öğrenmek isterseniz örnekteki Request sınıfını incelemenizi öneririm.

Benim çok işime yaradı umarım sizin de yarar.

Görüşmek üzere.

Laravel Yetkilendirme: Kullanıcı İzinleri ve Grupları Oluşturmak

Merhaba bu makalede Laravel’in çok fazla kullanılan paketlerinden biri olan spatie/laravel-permission paketini kullanarak kullanıcı grupları (Rol) ve kullanıcı izinleri (yetkileri) oluşturucaz.

Rol: kullanıcı grubu olarak da adlandırabileceğimiz üyemizin türü.

Permission: adının türkçe karşılığından da anlaşılabileceği gibi rolümüze verevceğimiz izinler.

3 tip kullanıcımız olacak. Yazar yazı okuma, yazma, düzenleme izinlerine sahip olucak, okuyucu sadece okuma iznine sahip olucak. admin ise tüm izinlere sahip olucak.

1.Yazar

2.Okuyucu

3.Admin

Benim kullandığım laravel sürümü 7, bu paket laravel 5.8 ve üzerini destekliyor bunu da bilmenizde yarar var.

Paketimizi laravel projemize aşağıdaki kodu çalıştırarak dahil edebiliriz.

 composer require spatie/laravel-permission

Şu an laravel projemize paketi dahil ettik fakat ufak tefek bazı düzenlemeler daha yapmamız gerekiyor.

İlk düzenleem paketimizin serviceprovider’ini register etmemiz olacak.

Spatie\Permission\PermissionServiceProvider::class,

Yukarıdaki service provider’i eklediğimizde görüntü şu şekilde olmalı.

Şimdi sırada migration işlemimiz var üye tablonuzun kurulu olduğunu varsayıyorum. Daha önceden laravel auth aktif etmediyseniz ve üye giriş – üye ol sayfalarını oluşturmadıysanız oluşturup derse devam edin.

Şimdi öncelikle 3kullanıcı ekliyoruz sisteme laravel hazır üye ol sayfasından üye olabilirsiniz.

User model’e kullanacağımız bazı metodlar için Trait ekliyoruz

use HasRoles;

Üyelerimizin id’leri [1,2,3] olsun

Öncelikle Role ve Permission oluşturmak için namespace’leri sayfamızın en üstüne ekliyoruz.

<?php
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
?>

Şimdi sırada oluşturduğumuz controller içine create adında bir fonksiyon oluşturuyoruz basitçe bu fonksiyon içinde oluşturmak istediğimiz rol ve permissionları oluşturucaz.

<?php
//kullanızı türlerini yani grupları oluşturuyoruz
Role::create(["name" => "writer"]);// id 1
Role::create(["name" => "reader"]);// id 2
Role::create(["name" => "superadmin"]); // id 3

//izinleri oluşturuyoruz
Permission::create(["name" => "edit post"]); // id 1
Permission::create(["name" => "read post"]); // id 2
Permission::create(["name" => "add user"]);// id 3


//yazar'a yazma,okuma iznini veriyoruz

$yazmaizni = Permission::findById(1);
$okumaizni = Permission::findById(2);

$yazar = Role::findById(1);

$yazar->givePermissionTo($yazmaizni);
$yazar->givePermissionTo($okumaizni);

//kullanıcıya yazar rolünü veriyoruz
$user1 = User::findById(1);
$user1->assignRole('writer');

//kullanıcının yazmaizni varmı kontrol ediyoruz 

if($user1->hasRole('writer')){
    //kullanıcı yazma iznine sahip
}else{
    //kullanıcı yazma iznine sahip değil
}

?>

Dosyamızı kaydedip controller’i tarayıcıda çalıştırıyoruz ve role ve izinleri oluşturuyoruz.

C# Dosya Oluşturma, Okuma, Yazma Örneği

string fileName = @"C:\Temp\Mahesh.txt";    
    
try    
{    
    // Check if file already exists. If yes, delete it.     
    if (File.Exists(fileName))    
    {    
        File.Delete(fileName);    
    }    
    
    // Create a new file     
    using (FileStream fs = File.Create(fileName))     
    {    
        // Add some text to file    
        Byte[] title = new UTF8Encoding(true).GetBytes("New Text File");    
        fs.Write(title, 0, title.Length);    
        byte[] author = new UTF8Encoding(true).GetBytes("Mahesh Chand");    
        fs.Write(author, 0, author.Length);    
    }    
    
    // Open the stream and read it back.    
    using (StreamReader sr = File.OpenText(fileName))    
    {    
        string s = "";    
        while ((s = sr.ReadLine()) != null)    
        {    
            Console.WriteLine(s);    
        }    
    }    
}    
catch (Exception Ex)    
{    
    Console.WriteLine(Ex.ToString());    
}

PHP – WordPress add_short_code() Kullanımı

WordPress’de eklenti veya tema geliştririken shortcode işlevi oluşturmayı sağlar. Yazı/sayfa veya özel post türü içerisinde kullanılabilir.

Eklentili örnek makale için tıklayın.

Parametreler: iki parametre alır

1. ek parametrelere girilen değeri almak içindir.

2.Açılma ve kapanma etiketleri arasındaki değerleri almak içindir.

Örnek:

function tag_kullan( $attr) {
 return " parametre = {$attr ['parametre1']}";
}
add_shortcode( 'yenitag', 'tag_kullan' );

[yenitag] işlevi kullanıldığında tag_kullan fonksiyonu çalışır. Ve ekrana “parametre1” yazdırılır.

Örnek Kullanım:

[yenitag parametre1=”Parametre 1 içeriği ekrana yazdır”]

Örnek: 2 Parametreli Kullanımı

function tag_kullan( $attr,$content) {
 return " parametre = {$attr ['parametre1']} " . $content;
}
add_shortcode( 'yenitag', 'tag_kullan' );

İkinci parametre ile ek olarak taglar arası içeriğe de erişebililiriz.

Kullanım Şekli:

[yenitag]içerik[yenitag]

PHP ile WordPress için ShortCode Oluşturmak

ShortCode Nedir ?

ShortCode wordpress içerisine farklı işlevler ekleyebilmek için kullanılan bir yapı. Yazı içerisinde bu kodu eklediğiniz alanda o kodun işlevi çalışmakta. Bu bazen o alanda bir form görünmesi veya ShortCode alanı içindeki kodun renklendirilmesi olabilir. Örnek eklentiyi beraber yazalım.

Kendimiz için oluşturacağımız ShortCode’nin işlevi arasına eklenen kodu yeşil yapması olsun.

Hemen wordpress ana dizininde bulunan wp-content/plugins dizinine kendi eklentimizi oluşturalım. Eklentimizin adı gcode-code-show olsun. Plugins dizinine gcode-code-show klasörü oluşturalım ve aynı isimde birde php dosyası oluşturalım.

Ayrıntılı fonksiyon : add_short_code()

Mevcut dizin durumu bu şekilde olacak.

Sonrasında gcode-code-show.php içerisinde aşağıdaki kodları ekleyelim ve sizlere bunu açıklayalım.

<?php
/*
Plugin Name: Code Shower
*/

function gcode_code_show_func( $atts ,$content){
    return "<div style='width: 100%;background: #008000'>" . $content . "</div>";
}
add_shortcode( 'greencode', 'gcode_code_show_func' );

Shortcode anlatırken bir de basit bir wordpress eklentisi geliştirmiş olduk.

Burada ana işlev :

add_shortcode( 'greencode', 'gcode_code_show_func' );

bu fonksiyonda. Burada anlatılan eğer yazı içerisinde ilk parametrenin etiketi çağırılırsa ikinci parametredeki fonksiyonu çalıştır.

Not: Eklentinizi etkinleştirmeyi unutmayın.

Yani wordpress’de içerik eklerken makalemize aşağıdaki gibi bir içerik eklersek. Bu içerik yeşil olarak görünecek.

Kullanım Şekli :

[shortcode-etiketi]içerik[/shortcode-etiketi]

Oluşturduğumuz eklenti için kullanım şekli:

[greencode]Yeşil metin![greencode]

Javascript Süreli ve Süresiz Sayfa Yönlendirme Kodu

Javascript ile süreli ve süresiz yönlendirme kodlarını paylaştım.

  1. Süresiz Yönlendirme

<script type="text/javascript">

window.location = "http://www.google.com.tr/"

</script>

2. Süreli Yönlendirme

3 saniye için 3000 değeri girildi kendinize göre düzenleyebilirsiniz.

<html>
<head>
<script type="text/javascript">

function bekle(){
    window.location = "http://www.google.com.tr"
}

</script>
</head>
<body onLoad="setTimeout('bekle()', 3000)">
<h2>Yönlendiriliyor!</h2>
<p>3 saniye için 3000 değeri girildi kendinize göre düzenleyebilirsiniz !</p>

</body>
</html>

XML Nedir? Kullanım Alanları Nelerdir?

XML bir dosya uzantısı. XML formatında içeriğe sahip olan dosyalar bu uzantıyı kullanır. XML formatı HTML’e benzeyen açılma ve kapanma etiketleri arasına verinin yazıldığı bir veri formatı. Bu sayede veriyi çok kolay bir şekilde okuyabilirsiniz. Aşağıda bir örnek xml içeriği bulunmaktadır.