۱۴۰۰/۰۴/۰۴

تغییر ساختار پیش فرض پوشه های در سیفونی

ساختار دایرکتوری ها در سیمفونی ۱۳۹۸/۰۶/۲۳

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

your-project/
├─ app/
│  ├─ config/
│  ├─ Resources/
│  │  └─ views/
│  └─ ...
├─ bin/
│  └─ ...
├─ src/
│  └─ ...
├─ tests/
│  └─ ...
├─ var/
│  ├─ cache/
│  ├─ logs/
│  └─ ...
├─ vendor/
│  └─ ...
└─ web/
   ├─ app.php
   └─ ...

تغییر دایرکتوری کش در سیمفونی

با استفاده از متد getCacheDir در کلاس AppKernal می توانید محل ذخیره سازی فایل های مربوط به کش سیستم را تغییر دهید.

// app/AppKernel.php
// ...
class AppKernel extends Kernel
{
    // ...
    public function getCacheDir()
    {
        return dirname(__DIR__).'/var/'.$this->environment.'/cache';
    }
}

در کد بالا  $this->environment محیلط فعلی یعنی  توسعه است در اینجا مکان دایرکتوری را به var/{environment}/cache. تغییر دادیم.

اگر بخواهید دایرکتوری   cache را تغییر دهید باید برای هر محیط توسعه آنرا تعریف کنید در غیر اینصورت امکان دارد رفتار های غیر منتظره ای را مشاهده کنید.برای هر محیط باید پیکربندی cache را تنظیم کنید.و هر محیط پوشه مخصوص به خود را برای ذخیره سازی فایل های کش داشته باشد.

تغییر پوشه logs  در سیفونی

تغییر محل پوشه logs مانند پوشه cash است .با این تفاوت که در کلاس appKernal باید از متد getLogDir() استفاده کنید.

// app/AppKernel.php
// ...
class AppKernel extends Kernel
{
    // ...
    public function getLogDir()
    {
        return dirname(__DIR__).'/var/'.$this->environment.'/logs';
    }
}

در کد بالا مکان دانیرکتوری logs را به var/{environment}/logs تغییر دادیم.

override_dir_structure in symfony framework

تغییر محل پوشه web در symfony

همانطور که میدانید این پوشه برای ذخیره سازی فایل های خارجی مثل css ها یا js یا تصاویر مربوط و.. استفاده میشود.اگر قصد داشته باشید نام پوشه web را در پروژه خود تغییر دهید ویا محل پوشه را جابه جا کنید.برای اینکار شما باید مطمئن باشید مسیر پوشه var بدرستی در فایل های app.php و app_dev.php تنظیم شده است .

اگر نام پوشه را تغییر دهید مشکلی نیست اما اگر بخواهید مسیر دایرکتوری را جابه جا کنید شما باید مسیر ها را در داخل فایل تغییر دهید.

require_once __DIR__.'/../path/to/app/autoload.php';
//این تغیرات را در فایل app.php و app_dev.php اعمال کنید

وبعد از ان در فایل composer.json تنظیمات  extra.symfony-web-dir را به شکل زیر تغییر دهید.

{
    "...": "...",
    "extra": {
        "...": "...",
        "symfony-web-dir": "my_new_web_dir"
    }
}

بیشتر وب سرویس های اشتراکی در مسیر ریشه دارای پوشه public_html هستند.تغییر نام پوشه web به public_html یکی از راه هایی هست که میتوانیید از آن در هاست های اشتراکی استفاده کنید.

اگر در پروژه خود از AsseticBundle استفاده می کنید ، باید گزینه read_from را پیکربندی کنید تا به فهرست وب صحیح اشاره کند:

# app/config/config.yml
# ...
assetic:
    # ...
    read_from: '%kernel.project_dir%/../public_html'

بعد از آن کش سیستم را پاک کنید تا تنظیمات اعمال کنید.

 php bin/console cache:clear --env=prod
 php bin/console assetic:dump --env=prod --no-debug

تغییر دایرکتوری vendor در سیمفونی

برای تغییر مسیر فایل vendor باید تغییراتی در فایل های app/autoload.php و composer.json اعمال کنید.

تغییرات فایل composer.json به شکل زیر است 

{
    "config": {
        "bin-dir": "bin",
        "vendor-dir": "/some/dir/vendor"
    },
}

و مسیر فایل autoload.php در مسیر app/autoload.php به شکل زیر تغییر دهید.

// app/autoload.php
// ...
$loader = require '/some/dir/vendor/autoload.php';


رای :

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

دایرکتوری

php

composer

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