الاستفادة من Eloquent لتحضير عناوين url

الاستفادة من Eloquent لتحضير عناوين url

ليس من النادر أن يكون لديك عشرات ، إن لم يكن مئات views في تطبيق Laravel. بحيت يمكن اعتبار الاشارة الى routes هو من اكتر الاشياء التي تتعب في عملية التكويد داخل view فكر مليا في عدد المرات التي قمت باستعمال متل الكود التالي في صفحاتك

<a href="{{ route('users.show', $user) }}">{{ $user->name }}</a>

لنفترض بعد مضي مدة معينة اردت تغيير طريقة بناء رابط معين الشيئ الدي سيؤدي بك للتعديل على العديد من الملفات في view مما قد ينجم عنه تخريب لصفحات معينة دون ان تلاحض دلك زيادة على كم المجهود المضني الدي ستبدله في تلك العملية.

لدلك لحل هده المشكلة يمكنك اللجوء لبعض الطرق

عن طريق Eloquent فقط

<?php 

namespace App;

class User {

  protected $appends = [
    'url'
  ];

  public function getUrlAttribute()
  {
    return route('users.show', $this);
  }
}

تم بعد دلك في ملفك داخل view يمكنك استخدام متل هدا الكود

<a href="{{ $user->url }}">{{ $user->name }}</a>

بالنسبة للمتقدمين في البرمحة يمكنهم استعمال الطريقة التانية

باستخدام Eloquent مع كلاس لعرض الروابط

<?php 

namespace App;

use App\Presenters\User\UrlPresenter;

class User {

  protected $appends = [
    'url'
  ];

  public function getUrlAttribute()
  {
    return new UrlPresenter($this);
  }
}
<?php

namespace App\Presenters\User;

use App\User;

class UrlPresenter {

    protected $user;

    public function __construct(User $user)
    {
        $this->user = $user;
    }

    public function __get($key)
    {
        if(method_exists($this, $key))
        {
            return $this->$key();
        }

        return $this->$key;
    }

    public function delete()
    {
        return route('users.delete', $this->user);
    }

    public function edit()
    {
        return route('users.edit', $this->user);
    }

    public function show()
    {
        return route('users.show', $this->user);
    }    

    public function update()
    {
        return route('users.update', $this->user);
    }
}

بعد دلك يمكنك استعمال متل الكود التالي في view

<a href="{{ $user->url->show }}">{{ $user->name }}</a>

كما تلاحض يمكنك باحدى الطريقتين السابقتين تغير طريقة بناء الروابط دون ان تخشى حدوت مشاكل في view

فريق التحرير

فريق التحرير هو المكلف بتدوين مقالات علمية بالعربية لتمكين المبرمجين العرب من الحصول على اخر الاخبار و التقنيات الجديدة بسرعة وفي مكان واحد.

إقرأ أيضً