اذهب إلى المحتوى

السؤال

نشر

لقد قمت بتحميل المكتبة sluggable في لارافل، ولكن عند إضافة الكود إلى المودل:

<?php
use Cviebrock\EloquentSluggable\SluggableInterface;
use Cviebrock\EloquentSluggable\SluggableTrait;

class Item extends Eloquent {

  use SluggableTrait;
  protected $sluggable = array(
      'build_from' => 'title',
      'save_to'    => 'slug',
  );
}

لا يتم حفظ slug ويتم تجاهل الكود السابق. مع العلم أنه إذا استخدمت الدالة التالية بشكل مباشر أحصل على النتيجة:

$product->sluggify();

كيف أستطيع حل هذه المشكلة؟

Recommended Posts

  • 0
نشر (معدل)

مرحبا .

إن كانت حاجتك لعمل slug فأقترح إستعمال الدالة slug ضمن المساعد Str كالتالي : 

<?php 

use Illuminate\Support\Str;

$slug = Str::slug('make a good slug', '-');

// make-a-good-slug

لكن ان احتجت تعميم العملية على الكثير من الموديلات و الاستفادة من باقي الـأشياء التي تقدمها مكتبة cviebrock/eloquent-sluggable فتأكد أن تستعمل الTrait الصحيح 

<?php 

use Cviebrock\EloquentSluggable\Sluggable;

..
class myModel extends Model{
   
   use Sluggable;
   ..
  
}

وبدل تعريف الsluggable attributes في attribute يجب عليك استعمال الabstract method التي اسمها sluggable() ضمن الTrait المستعمل , ومن ثم تعريفها بداخلها فيكون : 

<?php 

use Cviebrock\EloquentSluggable\Sluggable;

class myModel extends Model
{
    use Sluggable;

    /**
     * قم بتعريف القيم هنا
     *
     * @return array
     */
    public function sluggable()
    {
        return [
            'slug' => [
                'slugable_column' => 'title'
            ]
        ];
    }
}

و الان قم بتجريب إنشاء item جديد وسيتم حفظ الslug بشكل عادي . 

تم التعديل في بواسطة Adnane Kadri
  • 0
نشر

يجب عليك إضافة implements SluggableInterface ضمن المودل الذي تقوم باستخدامه:

class Item extends Eloquent implements SluggableInterface 
{
	....
}

وبعدها ستتمكن من استخدامها بالشكل التالي:

$item = Item::create([
    'title' => 'This is an item',
]);


echo $item->slug;

 

  • 0
نشر

يجب وضع implements SluggableInterfac في المودل الذي تستخدمه كما في الشكل التالي 

class Post extends Eloquent implements SluggableInterface 
{

}

ومن ثم يمكن استخدامها بهذا الشكل 

$post = Post::create([
    'title' => 'My Awesome Blog Post',
]);

ثم يمكن استرداد slug 

echo $post->slug;

إذا أردت القراءة أكثر يمكنك زيارة الرابط من هنا

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...