آموزش رایگان ساخت باندل در سیمفونی Symfony Bundle

آموزش رایگان ساخت باندل در سیمفونی Symfony Bundle

آموزش رایگان ساخت باندل در سیمفونی Symfony Bundle
هادی قربانی
زمان انتشار دوره : ۱۳۹۷/۱۱/۳

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

افراد با استعداد و کسانی که پشتکار خوبی دارن رو خیلی دوست دارم و تا جایی که بتونم بهشون در زمینه هایی که تجربه دارم کمک میکنم تا به چیزی که می خوان برسن. 

دست آورد های هادی قربانی

- مدیر و موسس جامعه وبدونی

- مدیر و موسس وبدونی مارکت

- مدیر و موسسه کمپ تاتس سایت آموزش انلاین

- راه اندازی بیش از 5 هزار سایت

- پشتیبانی بیش از 4 هزار سایت مختلف

- تاسیس وب سایت بیگ تم ( تو زمینه کاری خودش اول بود ) که به فرد دیگری واگذار شد

- تاسیس سایت دیجی وردپرس یکی از مراجع حرفه ای وردپرس در ایران

- ارائه بیش از هزاران مقاله در زمینه های مختلف

- تسلط به زبان HTML و HTML5

- تسلط به CSS و CSS3

- تسلط به زبان php

- تسلط به جی کوئری و آجاکس

- تسلط در طراحی قالب های وردپرس

- تسلط در طراحی سیستم های حرفه ای تحت وب

- ارائه آموزش خصوصی به بیش از 1000 نفر

- سئو و بهینه سازی چنیدن وب سایت بزرگ و کوچک

- آشنایی کامل و تسلط به ابزار ها و سیستم های مختلف گوگل

- مشاوره سئو به بیش از هزار سایت و کسب و کار های اینترنتی

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

- و بسیاری موارد دیگه که اگه بنویسم تموم نمیشه ... :)

مواردی که دوس دارم دائما باهاشون سر و کله بزنم:

- توسعه دهنده وب 

- طراحی وب سایت های حرفه ای 

- وردپرس ( یه زمونی هم خورد و خوراک و خواب و همه چیم شده بود وردپرس )

- سئو ( زمینه ای هست که تخصص زیادی بدست آوردم و تسلط کامل دارم بهش )

- فریم ورک سیمفونی ( در عرض 1 ماه بهش مسلط شدم سیستم قدرتمندی هست )

- برنامه نویسی به زبان های مختلف

- تبدیل جامعه وبدونی به بزرگترین برند کسب و کار اینترنتی و کار آفرینی

- تبدیل کمپ تاتس به بزرگترین بزند آموزش انلاین در ایران و خاورمیانه

- تبدیل وبدونی مارکت به بزرگترین و برند و بازار فایل های دیجیتال

- و ...

یه سری مواردی هم هست که متاسفانه به دلیل سو استفاده برخی افراد سودجو اینجا اسمی ازشون نمیبرم. ولی بهتون قول میدم هر سرویسی و دست آورد و حتی علایقی که داشتم رو اینجا براتون بنویسم.

ساخت باندل در سیمفونی باندل به انگلیسی bundle که نحوه ایجاد اون بسیار راحت می باشد. تا حدی که می توان در عرض چند ثانیه باندل مورد نظر را در سیمفونی ایجاد کرد. در این آموزش از سری آموزش سیمفونی به صورت رایگان اقدام به ساخت و توضیحات مربوط به مبحث ساخت باندل رو با هم بررسی می کنیم.

نحوه ساخت باندل در فریم ورک سیمفونی

برای ساخت باندل در سیمفونی دو راه وجود دارد , یکی روش دستی و یکی هم استفاده از خود سیمفونی برای ساخت باندل ها. بهترین روش برای انجام این کار انتخاب روش خود سیمفونی هست که با چند دستور ساده در محیط cmd می توان باندل مورد نظر را ایجاد کرد. می تونید آموزش نصب سیمفونی رو هم مشاهده کنید.

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

ساخت باندل از طریق سیمفونی

برای شروع کار وارد محیط cmd خودتون بشید. سی‌ام‌دی یا همون تخته سیاه ویندوز قبلا در بخش مربوط به آموزش نصب سیمفونی در موردش صحبت کردیم. بعد از اجرا کردن cmd ما باید کنسول سیمفونی را صدا بزنیم. برای این کار روی سیستم خودتون وارد پروژه خودتون بشید. این آموزش روی اخرین نسخه از ورژن 3 سیمفونی یعنی 3.3.16 می باشد.

بعد از وارد شدن داخل پوشه پروژه خودتون یعنی همون بخشی که فایل های سیمفونی وجود داره, در این بخش یک پوشه به اسم bin وجود داره. و داخل این پوشه یک فایل به نام console قرار داده شده که ما کار ساخت Bundle رو از طریق این فایل انجام خواهیم داد.

مسیر فایل console رو از طریق آدرس بار پنجره ای که باز هست براتون کپی کنید. مثلا اگر پروژه سیمفونی در همچین مسیری وجود داشته باشه c:\xampp\htdoc\project باید شما این مسیر رو به این شکل کپی کنید c:\xampp\htdocs\projest\bin\console بعد از کپی کردن این آدرس وارد cms بشید.

اجرا دستور console در cms یا کامنت لاین

برای اجرا مسیری که کپی کردید داخل cmd در هر مسیری که قرار دارید فرقی نمیکنه. دستور زیر را وارد کنید.

php C:\xampp\htdocs\project\bin\console

یعنی ابتدا php رو قرار بدید و مسیر فایل console رو در ادامه اون قرار بدید و در نهایت دکمه اینتر روی کیبورت رو بزنید. اگر دستور رو درست اجرا کرده باشید اطلاعاتی شبیه نوشته های زیر مشاهده می کنید.

C:\>php C:\xampp\htdocs\project\bin\console
Symfony 3.3.16 (kernel: app, env: dev, debug: true)

Usage:
  command [options] [arguments]

Options:
  -h, --help            Display this help message
  -q, --quiet           Do not output any message
  -V, --version         Display this application version
      --ansi            Force ANSI output
      --no-ansi         Disable ANSI output
  -n, --no-interaction  Do not ask any interactive question
  -e, --env=ENV         The Environment name. [default: "dev"]
      --no-debug        Switches off debug mode.
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Available commands:
  about                                   Displays information about the current project
  help                                    Displays help for a command
  list                                    Lists commands
 assets
  assets:install                          Installs bundles web assets under a public directory
 cache
  cache:clear                             Clears the cache
  cache:pool:clear                        Clears cache pools
  cache:warmup                            Warms up an empty cache
 config
  config:dump-reference                   Dumps the default configuration for an extension
 debug
  debug:config                            Dumps the current configuration for an extension
  debug:container                         Displays current services for an application
  debug:event-dispatcher                  Displays configured listeners for an application
  debug:router                            Displays current routes for an application
  debug:swiftmailer                       [swiftmailer:debug] Displays current mailers for an application
  debug:translation                       Displays translation messages information
  debug:twig                              Shows a list of twig functions, filters, globals and tests
 doctrine
  doctrine:cache:clear-collection-region  Clear a second-level cache collection region.
  doctrine:cache:clear-entity-region      Clear a second-level cache entity region.
  doctrine:cache:clear-metadata           Clears all metadata cache for an entity manager
  doctrine:cache:clear-query              Clears all query cache for an entity manager
  doctrine:cache:clear-query-region       Clear a second-level cache query region.
  doctrine:cache:clear-result             Clears result cache for an entity manager
  doctrine:cache:contains                 Check if a cache entry exists
  doctrine:cache:delete                   Delete a cache entry
  doctrine:cache:flush                    [doctrine:cache:clear] Flush a given cache
  doctrine:cache:stats                    Get stats on a given cache provider
  doctrine:database:create                Creates the configured database
  doctrine:database:drop                  Drops the configured database
  doctrine:database:import                Import SQL file(s) directly to Database.
  doctrine:ensure-production-settings     Verify that Doctrine is properly configured for a production environment.
  doctrine:generate:crud                  [generate:doctrine:crud] Generates a CRUD based on a Doctrine entity
  doctrine:generate:entities              [generate:doctrine:entities] Generates entity classes and method stubs from your mapping information
  doctrine:generate:entity                [generate:doctrine:entity] Generates a new Doctrine entity inside a bundle
  doctrine:generate:form                  [generate:doctrine:form] Generates a form type class based on a Doctrine entity
  doctrine:mapping:convert                [orm:convert:mapping] Convert mapping information between supported formats.
  doctrine:mapping:import                 Imports mapping information from an existing database
  doctrine:mapping:info
  doctrine:query:dql                      Executes arbitrary DQL directly from the command line.
  doctrine:query:sql                      Executes arbitrary SQL directly from the command line.
  doctrine:schema:create                  Executes (or dumps) the SQL needed to generate the database schema
  doctrine:schema:drop                    Executes (or dumps) the SQL needed to drop the current database schema
  doctrine:schema:update                  Executes (or dumps) the SQL needed to update the database schema to match the current mapping metadata.
  doctrine:schema:validate                Validate the mapping files.
 generate
  generate:bundle                         Generates a bundle
  generate:command                        Generates a console command
  generate:controller                     Generates a controller
 lint
  lint:twig                               Lints a template and outputs encountered errors
  lint:xliff                              Lints a XLIFF file and outputs encountered errors
  lint:yaml                               Lints a file and outputs encountered errors
 router
  router:match                            Helps debug routes by simulating a path info match
 security
  security:check                          Checks security issues in your project dependencies
  security:encode-password                Encodes a password.
 server
  server:log                              Starts a log server that displays logs in real time
  server:run                              Runs a local web server
  server:start                            Starts a local web server in the background
  server:status                           Outputs the status of the local web server for the given address
  server:stop                             Stops the local web server that was started with the server:start command
 swiftmailer
  swiftmailer:email:send                  Send simple email message
  swiftmailer:spool:send                  Sends emails from the spool
 translation
  translation:update                      Updates the translation file

در این بخش شما یک سری از دستوراتی که با استفاده از کنسول سیمفونی می تونید اجرا کنید رو خواهید دید. بین دستورات ظاهر شده یک بخش مربوط به generate هست که 3 دستور زیر اون قرار داره. یکی از این سه دستور  generate:bundle هست که ما از این دستور برای ایجاد باندل جدید در سیمفونی استفاده می کنیم.

آموزش ساخت باندل سیمفونی

اجرای دستور ساخت باندل سیمفونی

حالا شما باید دستور قبلی یعنی کنسول رو دوباره تایپ کرده و در انتهای اون دستور generate:bundle رو قرار داده و اینتر بزنید. یعنی دستور به شکل زیر خواهد بود.

 php C:\xampp\htdocs\project\bin\consol generate:bundle

یعنی ما اومدیم دستور console رو دقیقا تکرار کردم و در ادامه یه اسپیس زدیم و دستور generate:bundle رو در ادامش نوشتیم. باز زدن این دستور مراحل ساخت باندل شروع میشه.

مراحل ساخت باندل

1- در اولین قدم از شما یه سوال پرسیده میشه که میگه می خواید از این باندلی که دارید میسازید در پروژه های دیگه هم استفاده کنید که پاسخ پیش فرض no هست.

Welcome to the Symfony bundle generator!
Are you planning on sharing this bundle across multiple applications? [no]:

با مشاهده این سوال کار خاصی نیاز نیست انجام بدید اینتر بزنید.

2- در قدم دوم شما باید نام باندل خودتون رو مشخص کنید. که سوالش به شکل زیر هست

Your application code must be written in bundles. This command helps
you generate them easily.

Give your bundle a descriptive name, like BlogBundle.
Bundle name:

در این بخش نام باندل رو باید وارد کنید که دو نکته خیلی مهم اینجا هست. برای انتخاب نام باندل سیمفونی اولا باید حرف اول اسم باندل حروف بزرگ باشه و حتما در انتهای اسم انتخابی کلمه Bundle رو باید بنویسید که حرف B حتما باید بزرگ باشه. مثلا اسم باندل Product هست که باید به این شکل وارد کنید ProductBundle و اینتر بزنید.

توجه داشته باشید که شما می تونید همزمان با انتخاب نام باندل اگر تمایل دارید باندل داخل پوشه خاصی ایجاد بشه می تونید اسم پوشه رو هم بنویسید. به فرض مثال اگر بخواید باندل داخل یک پوشه به اسم mypackage ایجاد بشه باید در بخش اسم به این شکل عمل کنید Mypackage/ProductBundle در این صورت باندل داخل پوشه ای به اسم mypackage ایجاد میشه. و اگر این کار رو انجام بدید و اینتر بزنید یه سوال دیگه از شما پرسیده میشه که میگه می خواهید اسم باندل و namespace باندل همین چیزی باشه که انتخاب کردید بدون هیچ ورودی اینتر بزنید.

3- در مرحله سوم از شما مسیر ایجاد باندل پرسیده میشه. به این منظور که می خواید باندل داخل چه مسیری از پروژه شما ایجاد بشه. به صورت پیش فرض همه باندل ها در پوشه src که یکی از پوشه های پیش فرض سیمفونی هست ایجاد میشه. من پیشنهاد می کنم داخل همین پوشه ایجادش کنید.

Bundles are usually generated into the src/ directory. Unless you're
doing something custom, hit enter to keep this default!

Target Directory [src/]:

اگر تمایل دارید در همین مسیر پوشه src باندل ایجاد بشه نیازی به تغییر نیست چون پاسخ پیش فرض برای سوال مرحله سوم همون src هست اگر چیزی در نظر نگیرید.

4- در مرحله چهارم یه سوال دیگه از شما پرسیده میشه تحت عنوان اینکه می خواید کانفیگ سیستم بر اساس کدوم یکی از حالت های annotation, yml, xml, php باشه ؟ که شما بهتره yml رو نوشته و اینتر بزنید.

Configuration format (annotation, yml, xml, php) [annotation]:

بعد از اینکه سوال بالا رو مشاهده کردید رو به روی سوال بنویسید yml و اینتر بزنید. این بخش رو شما مشخص می کنید که عملیات کانفیگ بر پایه yml باشه.

5- مرحله پنجم دیگه نداریم , بعد از اینکه در مرحله 4 نوع کانفیگ مشخص شد و اینتر زدید سیمفونی باندل شما رو در مسیر مشخص شده با نام مشخص شده ایجاد می کنه و اطلاعاتی شبیه به نوشته های زیر برای موفقیت نصب باندل برای شما نشون داده میشه.

Target Directory [src/]:

What format do you want to use for your generated configuration?

Configuration format (annotation, yml, xml, php) [annotation]:


  Bundle generation


> Generating a sample bundle skeleton into D:\root\htdocs\myapp\app/../src/Custom/ProductBundle
  created D:\root\htdocs\myapp\app/../src/Custom/ProductBundle/
  created D:\root\htdocs\myapp\app/../src/Custom/ProductBundle/CustomProductBundle.php
  created D:\root\htdocs\myapp\app/../src/Custom/ProductBundle/Controller/
  created D:\root\htdocs\myapp\app/../src/Custom/ProductBundle/Controller/DefaultController.php
  created D:\root\htdocs\myapp\app/../tests/CustomProductBundle/Controller/
  created D:\root\htdocs\myapp\app/../tests/CustomProductBundle/Controller/DefaultControllerTest.php
  created D:\root\htdocs\myapp\app/../src/Custom/ProductBundle/Resources/views/Default/
  created D:\root\htdocs\myapp\app/../src/Custom/ProductBundle/Resources/views/Default/index.html.twig
  created D:\root\htdocs\myapp\app/../src/Custom/ProductBundle/Resources/config/
  created D:\root\htdocs\myapp\app/../src/Custom/ProductBundle/Resources/config/services.yml
> Checking that the bundle is autoloaded
OK
> Enabling the bundle inside D:\root\htdocs\myapp\app\AppKernel.php
  updated D:\root\htdocs\myapp\app\AppKernel.php
OK
> Importing the bundle's routes from the D:\root\htdocs\myapp\app\config\routing.yml file
  updated D:\root\htdocs\myapp\app/config/routing.yml
OK
> Importing the bundle's services.yml from the D:\root\htdocs\myapp\app\config\config.yml file
  updated D:\root\htdocs\myapp\app/config/config.yml
OK


  Everything is OK! Now get to work :).

ما در عرض چند ثانیه می تونیم این کار رو انجام بدیم. یعنی زمانی که شما دارید این سه مرحله رو پیش میرید فقط و فقط 10 ثانیه طول میکشه که باندل مورد نظر خودتون رو بسازید. در روش بعدی هم گه روش دستی هست شما باید کلیه کارهای مربوط به ساخت یک باندل رو باید دستی انجام بدید.

نحوه ساخت باندل در فریم ورک سیمفونی

نحوه ساخت باندل سیمفونی به صورت دستی

برای ساخت دستی باندل من در این قسمت چند نکته میگم که شما به راختی بتونید به روش دستی یک باندل بسازید.

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

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

اما فقط پوشه ها و فایل های داخل پوشه src برای ساخت باندل به روش دستی کافی نیست. بعد اینکه متوجه فایل ها و پوشه های باندل ساخته شده شدید. برید داخل پوشه app که یکی از پوشه های اصلی سیمفونی هست. داخل این پوشه یک فایل به نام AppKernel.php وجود داره که باید در حالت ویرایش با یه ویرایشگر متن مثل notepad / phpstorm / sublinText و ... بازش کنید. داخل کدهای فایل AppKernel.php با نام باندل شما یک خط کد تولید شده.

دنبال متغیر $bundles بگردید. داخل لیست مربوط به $bundles آخرین خط باید مربوط به باندل تازه ساخته شده باشه. که چیزی شبیه به کد زیر هست

new Custom\ProductBundle\CustomProductBundle(),

باید این خط رو زمانی که دارید دستی باندل میسازید , بر اساس نام پوشه و نام کلاس باید توی این قسمت قرار بدید.

هنوز کار تموم نشده , داخل پوشه app یه پوشه ای هست به نام config داخل این پوشه هم باید دو تا از فایل ها رو باز کرده و یه کدی رو داخلشون قرار بدید. فایل config.yml رو در حالت ویرایش باز کنید. در همون بخش ابتدایی قسمت import وجود داره که داخل لیست ایمپورت آخرین خط مربوط به آخرین باندل ساخته شده داخل پروژه سیمفونی هست. کدی شبیه به کد زیر هست

- { resource: "@CustomProductBundle/Resources/config/services.yml" }

این خط هم در صورت ساخت باندل به صورت دستی باید بیاید تو این قسمت بر اساس مسیر و نام باندل وارد کرده وفایل رو ذخیره کنید.

کار بعدی که باید انجام بدید داخل همین پوشه config یه فایل دیگه هست به نام routing.yml این فایل هم در حالت ویرایش باز کنید. اینجا به تعداد باندل های ایجاد شده در سیمفونی روتینگ وجود داره. که اولین روتینگ مربوط به آخرین باندل ساخته شده هست. چیزی شبیه به کد زیر می باشد.

custom_product:
    resource: "@CustomProductBundle/Controller/"
    prefix:   /

کل این بخش رو در فایل routing.yml باید قرار داده و فایل رو ذخیره کنید. 

توجه داشته باشید کدهای مشخص شده در بالا مربوط به باندلی هست که من در طی این آموزش روی سیستم خودم ساختم , شما باید بر اساس نام و مسیر مربوط به باندل خودتون این کدها رو جایگزین کنید. بعد از انجام این کار ها  شما موفق میشید به صورت دستی یک باندل بسازید.

حذف باندل در سیمفونی

برای حذف کردن یک باندل در سیمفونی شما کار سختی رو پیش رو ندراید البته باید روش دستی رو حتما بالاتر خونده باشید. برای پاک کردن یک باندل در سیمفونی که ایجادش کردید شما ابتدا داخل پوشه src پوشه مروبط به باندل رو حذف کنید. بعدش داخل سه فایلی که در بالا برای روش ساخت باندل به صورت دستی توضیح دادم برید یعنی فایل های AppKernel.php / config.yml / routing.yml اینا رو در حالت ویرایش باز کرده و اون خط کدهایی که مربوط به باندل شما هست و می خواهید حذف کنید کلا اونا رو از داخل این فایل ها حذف کرده و فایل ها رو ذخیره کنید. اینجوری باندل مورد نظر به طور کلی از روی پروژه سیمفونی شما حذف میشه.

همون طور که مشاهده کردید نحوه ساخت باندل در سیمفونی بسیار راحت هست و شما به راحتی موفق به ایجاد و نصب یک باندل در سیمفونی شدید.

منبع: کمپ تاتس

0 دیدگاه برای این محصول ثبت شده است

webdooni
برای ثبت دیدگاه باید شوید.

هادی قربانی این آیتم را پشتیبانی میکند

دارای پشتیبانی

حداقل و حداکثر زمان پاسخگویی 1 الی 2 روز کاری میباشد.

توجه داشته باشید

راه ارتباطی برای پشتیبانی محصولات از طریق سیستم تیکتینگ کمپ تاتس می باشد

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

  • پاسخگویی به سوالات قبل از خرید در بخش دیدگاهها
  • پاسخگویی به سوالات و مشکلات بعد از خرید از طریق تیکت
  • تنها مواردی که مربوط به محصول خریداری شده است شامل پشتیبانی می باشد
  • ارائه بروزرسانی های رایگان در صورت وجود

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

  • آموزش اختصاصی مباحث.
  • آموزش های جانبی مربوط به دوره خریداری شده.

شرایط و قوانین را حتما مطالعه کنید.

سرفصلی برای این محصول ایجاد نشده است

توسط
توسط
توسط
توسط
توسط