۱۴۰۰/۰۷/۳۰

ساخت url های دلخواه در سیمفونی

ساخت url در Symfony ۱۳۹۸/۰۴/۲۶

اکر بخواهمیم برای صفحات وب خود از url های خوانا (friendl url ) استفاده کنیم برای داشتن رتبه بهتری در گوگل بدون استفاده از فریم ورک باید با کد های پیچیده php و htacces دست پنجه نرم کنیم .که با توج به تجربه من که اتفاقا در همین وب سایت گیتا از ان استفاه کردم بسیار زمان بر است .

در فریم ورک سیمفونی براحتی میشه ادرس های خونا برای صفحات مختلف ایجاد کرد.به دو روش مختلف میشه چنین آدرس های ساخت .در هر دور روش باید در جدول پایگاه داده ها فیلدی مشخص کردن که url وارد شده بوسیله کاربر ذخیره کنه.بطور مثال زمانیکه  آدمین وب سایت قصد داشته باشه مقاله جدیدی منتشر کنه درهنگام پر کردن فیلد های مختلف ادرس اینترنتی هم به همراه مابقی فیلد ها تکمیل میکنه و در جدول ذخیره میشه.

روش اول :

تو این روش نیازی نیست ادرس url وارد شده بوسیله کاربر حتما یکتا باشد.چون id مطلب هم به همراه url وارد شده بوسله کاربر در ادرس خود داریم بطور مثال :

www.yourWebsite/3/how-to-create-seo-friendly-URL

در این حالت Annotations کنترلر ما باید به شکل زیر باشد .

 

و ادرس دهی برای این کنترلر به شکل زیر 


  /**
     * @Route("/{id}/{slug}",name="Details")

     */
    public function DetailsAction($id)
    {
        //////Details/////
        $em = $this->getDoctrine()->getManager();
        $DetailsRepo=$em->getRepository('AppBundle:Details');
        $DetailsData = $DetailsRepo->find($id);
        .
        .
        .

و آدرس دهی شما باید به شکل زیر باشد

< a title="{{ DetailsData .title }}" href="{{ url('Details',{'id': DetailsData.id,'slug':DetailsData .urlSlug}) }}">
    آدرس وب
</ a >

به این نکته توجه کنید که urlSlug در اینجام همان url ای هست که ادمین هنگام ارسال مطلب انرا تکمیل کرده و در جدول Details ذخیره شده

روش دوم

در این روش برای ساخت url دلخوه حتما به این نکته توجه کنید که به ادمین سایت در قالب یک پیام این نکته را فیلد slug حتما باید یکتا و منحصر بفرد باشد .و بعد از وارد کردن url شما باید بوسیله listener چک کنید که url وارد شده یونیک است و اگر در جدول تکراری باشد به ادمین در قالب یک اخطار توضیح دهید که url دیگری برای مطلب خود انتخاب کند.

در این روش کنترلر شما باید به شکل زیر باشد

 Route("/{slug}", name="Details")@*
 */
public function DetailsAction(Request $request, $slug)
{
;()em = $this->getDoctrine()->getManager$
;DetailsRepo=$em->getRepository('AppBundle:Details')$
;DetailsData = $DetailsRepo->findOneBy(['slug' => $slug])$

و آدرس اینترتی شما باید به شکل زیر مقدار دهی شود

< a title="{{ DetailsData .title }}" href="{{ url('Details',{'slug':DetailsData .urlSlug}) }}"
    آدرس وب
</ a >

رای :

ساخت url دلخواه

سیمفونی

friendly url

فریمورک سیمفونی

ارسال نظر
Copyright © All right reserved.