پیاده سازی صفحات bundle و مسیردهی آنها

در مقاله‌ قبل ( ساخت bundle جدید در Symfony ) با استفاده از دستورات  console به راحتی یک bundle جدید ایجاد کردیم، با توجه به اینکه در قسمت سوم مقاله ( بخش view در symfony ) در رابطه با view صحبت کرده بودیم و ساختار کلی view  را پیاده سازی کردیم در این قسمت سایر بخش‌های view و صفحات و جزئیات آن را پیاده سازی می‌کنیم.

Generating a New Controller

ابتدا کنترلر جدیدی را در BlogBundle ایجاد می‌کنیم تا صفحات مختلف وبلاگ را در آن مدیریت کنیم. با اجرای دستور زیر در ترمینال می‌توانیم برای ایجاد کنترلر اقدام کنیم.

php bin/console generate:controller

که به صورت زیر ایجاد می‌شود.


نکته بسیار جالبی که هنگام ساخت کنترلر متوجه شدم این بود که همزمان با ساخت کنترلر فایل تست آن نیز ایجاد شد! یعنی در این فریمورک نهایت استانداردها و اصولی کار کردن لحاظ میشه و به نوعی به کاربر یادآوری میکنه که باید تست هم بنویسی که پروژه به صورت استاندارد پیش بره!

بعد از ساخت کنترلر متدهای صفحات مختلف را ایجاد می‌کنیم و فایلهای twig برای view صفحات سایت را داخل فولدر قرار میدهیم. صفحاتی که داریم شامل صفحه اصلی، بلاگ، دسته بندی و جزئیات مطلب.

    /**
     * @Route("/blog", name="blog")
     */
    public function indexAction(){

        return $this->render('Fantom/Front/blog.html.twig');

    }


    /**
     * @Route("/blog/{category_id}", name="category")
     */
    public function categoryAction(){

        return $this->render('Fantom/Front/category.html.twig');

    }


    /**
     * @Route("blog/posts/{post_id}", name="post")
     */
    public function postViewAction(){

        return $this->render('Fantom/Front/post.html.twig');

    }

بعد از ایجاد صفحات و متدها لینک‌دهی صفحات را با استفاده از route nameهای ایجاد شده انجام می‌دهیم. 

{{ path('home') }}
{{ path('category',{" category_id":1})="" }}
{{ path('blog') }}
{{ path('post',{'post_id':2}) }}

در نهایت با توجه به اینکه من از Git Flow برای این پروژه استفاده میکنم قبلا برای این ساختار یک feature به نام theme ساخته بودم که با توجه به اینکه ساختار به پایان رسید این feature را به صورت زیر finish  و در نهایت release میکنم.

شما می‌توانید آخرین تغییرات این ساختار را روی ورژن V.1.2 روی گیت‌هاب من مشاهده کنید.

Comments