###> liip/imagine-bundle ### | ###> liip/imagine-bundle ### | ||||
/public/media/cache/ | /public/media/cache/ | ||||
###< liip/imagine-bundle ### | ###< liip/imagine-bundle ### | ||||
###> symfony/webpack-encore-bundle ### | |||||
/node_modules/ | |||||
/public/build/ | |||||
npm-debug.log | |||||
yarn-error.log | |||||
###< symfony/webpack-encore-bundle ### |
/* | |||||
* Welcome to your app's main JavaScript file! | |||||
* | |||||
* We recommend including the built version of this JavaScript file | |||||
* (and its CSS file) in your base layout (base.html.twig). | |||||
*/ | |||||
// any CSS you import will output into a single css file (app.css in this case) | |||||
import './styles/app.css'; | |||||
// start the Stimulus application | |||||
import './bootstrap'; |
/* | |||||
* Welcome to your app's main JavaScript file! | |||||
* | |||||
* We recommend including the built version of this JavaScript file | |||||
* (and its CSS file) in your base layout (base.html.twig). | |||||
*/ | |||||
// any CSS you import will output into a single css file (app.css in this case) | |||||
import './common.scss'; | |||||
import './common.js'; | |||||
// start the Stimulus application | |||||
//import './bootstrap'; | |||||
alert('Yo !') ; |
$color: red ; | |||||
body { | |||||
background-color: $color ; | |||||
} |
import { startStimulusApp } from '@symfony/stimulus-bridge'; | |||||
// Registers Stimulus controllers from controllers.json and in the controllers/ directory | |||||
export const app = startStimulusApp(require.context( | |||||
'@symfony/stimulus-bridge/lazy-controller-loader!./controllers', | |||||
true, | |||||
/\.(j|t)sx?$/ | |||||
)); | |||||
// register any custom, 3rd party controllers here | |||||
// app.register('some_controller_name', SomeImportedController); |
{ | |||||
"controllers": [], | |||||
"entrypoints": [] | |||||
} |
import { Controller } from 'stimulus'; | |||||
/* | |||||
* This is an example Stimulus controller! | |||||
* | |||||
* Any element with a data-controller="hello" attribute will cause | |||||
* this controller to be executed. The name "hello" comes from the filename: | |||||
* hello_controller.js -> "hello" | |||||
* | |||||
* Delete this file or adapt it for your use! | |||||
*/ | |||||
export default class extends Controller { | |||||
connect() { | |||||
this.element.textContent = 'Hello Stimulus! Edit me in assets/controllers/hello_controller.js'; | |||||
} | |||||
} |
body { | |||||
background-color: lightgray; | |||||
} |
"symfony/twig-bundle": "^5.2", | "symfony/twig-bundle": "^5.2", | ||||
"symfony/validator": "5.2.*", | "symfony/validator": "5.2.*", | ||||
"symfony/web-link": "5.2.*", | "symfony/web-link": "5.2.*", | ||||
"symfony/webpack-encore-bundle": "^1.11", | |||||
"symfony/yaml": "5.2.*", | "symfony/yaml": "5.2.*", | ||||
"twig/extra-bundle": "^2.12|^3.0", | "twig/extra-bundle": "^2.12|^3.0", | ||||
"twig/twig": "^2.12|^3.0" | "twig/twig": "^2.12|^3.0" |
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", | ||||
"This file is @generated automatically" | "This file is @generated automatically" | ||||
], | ], | ||||
"content-hash": "813d067c880792b52c84288d5d1addf7", | |||||
"content-hash": "2108a57a09a39568569da93f03a4f797", | |||||
"packages": [ | "packages": [ | ||||
{ | { | ||||
"name": "artgris/filemanager-bundle", | "name": "artgris/filemanager-bundle", | ||||
], | ], | ||||
"time": "2021-03-07T15:51:33+00:00" | "time": "2021-03-07T15:51:33+00:00" | ||||
}, | }, | ||||
{ | |||||
"name": "symfony/webpack-encore-bundle", | |||||
"version": "v1.11.2", | |||||
"source": { | |||||
"type": "git", | |||||
"url": "https://github.com/symfony/webpack-encore-bundle.git", | |||||
"reference": "f282fb17ffa4839ba491eb7e3f5ffdd40c86f969" | |||||
}, | |||||
"dist": { | |||||
"type": "zip", | |||||
"url": "https://api.github.com/repos/symfony/webpack-encore-bundle/zipball/f282fb17ffa4839ba491eb7e3f5ffdd40c86f969", | |||||
"reference": "f282fb17ffa4839ba491eb7e3f5ffdd40c86f969", | |||||
"shasum": "" | |||||
}, | |||||
"require": { | |||||
"php": ">=7.1.3", | |||||
"symfony/asset": "^4.4 || ^5.0", | |||||
"symfony/config": "^4.4 || ^5.0", | |||||
"symfony/dependency-injection": "^4.4 || ^5.0", | |||||
"symfony/http-kernel": "^4.4 || ^5.0", | |||||
"symfony/service-contracts": "^1.0 || ^2.0" | |||||
}, | |||||
"require-dev": { | |||||
"symfony/framework-bundle": "^4.4 || ^5.0", | |||||
"symfony/phpunit-bridge": "^4.4 || ^5.0", | |||||
"symfony/twig-bundle": "^4.4 || ^5.0", | |||||
"symfony/web-link": "^4.4 || ^5.0" | |||||
}, | |||||
"type": "symfony-bundle", | |||||
"extra": { | |||||
"thanks": { | |||||
"name": "symfony/webpack-encore", | |||||
"url": "https://github.com/symfony/webpack-encore" | |||||
} | |||||
}, | |||||
"autoload": { | |||||
"psr-4": { | |||||
"Symfony\\WebpackEncoreBundle\\": "src" | |||||
} | |||||
}, | |||||
"notification-url": "https://packagist.org/downloads/", | |||||
"license": [ | |||||
"MIT" | |||||
], | |||||
"authors": [ | |||||
{ | |||||
"name": "Symfony Community", | |||||
"homepage": "https://symfony.com/contributors" | |||||
} | |||||
], | |||||
"description": "Integration with your Symfony app & Webpack Encore!", | |||||
"support": { | |||||
"issues": "https://github.com/symfony/webpack-encore-bundle/issues", | |||||
"source": "https://github.com/symfony/webpack-encore-bundle/tree/v1.11.2" | |||||
}, | |||||
"funding": [ | |||||
{ | |||||
"url": "https://symfony.com/sponsor", | |||||
"type": "custom" | |||||
}, | |||||
{ | |||||
"url": "https://github.com/fabpot", | |||||
"type": "github" | |||||
}, | |||||
{ | |||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", | |||||
"type": "tidelift" | |||||
} | |||||
], | |||||
"time": "2021-04-26T12:48:17+00:00" | |||||
}, | |||||
{ | { | ||||
"name": "symfony/yaml", | "name": "symfony/yaml", | ||||
"version": "v5.2.7", | "version": "v5.2.7", |
FOS\CKEditorBundle\FOSCKEditorBundle::class => ['all' => true], | FOS\CKEditorBundle\FOSCKEditorBundle::class => ['all' => true], | ||||
Artgris\Bundle\FileManagerBundle\ArtgrisFileManagerBundle::class => ['all' => true], | Artgris\Bundle\FileManagerBundle\ArtgrisFileManagerBundle::class => ['all' => true], | ||||
EasyCorp\Bundle\EasyAdminBundle\EasyAdminBundle::class => ['all' => true], | EasyCorp\Bundle\EasyAdminBundle\EasyAdminBundle::class => ['all' => true], | ||||
Symfony\WebpackEncoreBundle\WebpackEncoreBundle::class => ['all' => true], | |||||
]; | ]; |
framework: | |||||
assets: | |||||
json_manifest_path: '%kernel.project_dir%/public/build/manifest.json' |
#webpack_encore: | |||||
# Cache the entrypoints.json (rebuild Symfony's cache when entrypoints.json changes) | |||||
# Available in version 1.2 | |||||
#cache: true |
#webpack_encore: | |||||
# strict_mode: false |
webpack_encore: | |||||
# The path where Encore is building the assets - i.e. Encore.setOutputPath() | |||||
output_path: '%kernel.project_dir%/public/build' | |||||
# If multiple builds are defined (as shown below), you can disable the default build: | |||||
# output_path: false | |||||
# Set attributes that will be rendered on all script and link tags | |||||
script_attributes: | |||||
defer: true | |||||
# link_attributes: | |||||
# If using Encore.enableIntegrityHashes() and need the crossorigin attribute (default: false, or use 'anonymous' or 'use-credentials') | |||||
# crossorigin: 'anonymous' | |||||
# Preload all rendered script and link tags automatically via the HTTP/2 Link header | |||||
# preload: true | |||||
# Throw an exception if the entrypoints.json file is missing or an entry is missing from the data | |||||
# strict_mode: false | |||||
# If you have multiple builds: | |||||
# builds: | |||||
# pass "frontend" as the 3rg arg to the Twig functions | |||||
# {{ encore_entry_script_tags('entry1', null, 'frontend') }} | |||||
# frontend: '%kernel.project_dir%/public/frontend/build' | |||||
# Cache the entrypoints.json (rebuild Symfony's cache when entrypoints.json changes) | |||||
# Put in config/packages/prod/webpack_encore.yaml | |||||
# cache: true |
resource: '../Lc/SovBundle/Controller/' | resource: '../Lc/SovBundle/Controller/' | ||||
tags: [ 'controller.service_arguments' ] | tags: [ 'controller.service_arguments' ] | ||||
Lc\CaracoleBundle\: | |||||
resource: '../Lc/CaracoleBundle/' | |||||
exclude: | |||||
- '../Lc/CaracoleBundle/DependencyInjection/' | |||||
- '../Lc/CaracoleBundle/Entity/' | |||||
- '../Lc/CaracoleBundle/Kernel.php' | |||||
- '../Lc/CaracoleBundle/Tests/' | |||||
Lc\CaracoleBundle\Controller\: | |||||
resource: '../Lc/CaracoleBundle/Controller/' | |||||
tags: [ 'controller.service_arguments' ] | |||||
# add more service definitions when explicit configuration is needed | # add more service definitions when explicit configuration is needed | ||||
# please note that last definitions always *replace* previous ones | # please note that last definitions always *replace* previous ones |
{ | |||||
"devDependencies": { | |||||
"@symfony/stimulus-bridge": "^2.0.0", | |||||
"@symfony/webpack-encore": "^1.0.0", | |||||
"core-js": "^3.0.0", | |||||
"regenerator-runtime": "^0.13.2", | |||||
"sass": "^1.32.12", | |||||
"sass-loader": "^11.0.0", | |||||
"stimulus": "^2.0.0", | |||||
"webpack-notifier": "^1.6.0" | |||||
}, | |||||
"license": "UNLICENSED", | |||||
"private": true, | |||||
"scripts": { | |||||
"dev-server": "encore dev-server", | |||||
"dev": "encore dev", | |||||
"watch": "encore dev --watch", | |||||
"build": "encore production --progress" | |||||
} | |||||
} |
use App\Entity\Site\Page; | use App\Entity\Site\Page; | ||||
use App\Entity\User\GroupUser; | use App\Entity\User\GroupUser; | ||||
use App\Entity\User\User; | use App\Entity\User\User; | ||||
use EasyCorp\Bundle\EasyAdminBundle\Config\Assets; | |||||
use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem; | use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem; | ||||
use Lc\SovBundle\Controller\Admin\DashboardController as LcDashboardController; | use Lc\SovBundle\Controller\Admin\DashboardController as LcDashboardController; | ||||
class DashboardController extends LcDashboardController | class DashboardController extends LcDashboardController | ||||
{ | { | ||||
public function configureAssets(): Assets | |||||
{ | |||||
return parent::configureAssets(); // TODO: Change the autogenerated stub | |||||
} | |||||
/*public function configureMenuItems(): iterable | /*public function configureMenuItems(): iterable | ||||
{ | { | ||||
$submenu1 = [ | $submenu1 = [ |
namespace App\Controller\Admin; | namespace App\Controller\Admin; | ||||
use App\Entity\Site\Page; | use App\Entity\Site\Page; | ||||
use EasyCorp\Bundle\EasyAdminBundle\Config\Assets; | |||||
use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField; | use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField; | ||||
use EasyCorp\Bundle\EasyAdminBundle\Field\TextEditorField; | use EasyCorp\Bundle\EasyAdminBundle\Field\TextEditorField; | ||||
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField; | use EasyCorp\Bundle\EasyAdminBundle\Field\TextField; | ||||
class PageCrudController extends AbstractCrudController | class PageCrudController extends AbstractCrudController | ||||
{ | { | ||||
public static function getEntityFqcn(): string | |||||
{ | |||||
return Page::class; | |||||
} | |||||
public static function getEntityFqcn(): string | |||||
{ | |||||
return Page::class; | |||||
} | |||||
public function configureFields(string $pageName): iterable | |||||
{ | |||||
return [ | |||||
TextField::new('title'), | |||||
CKEditorField::new('description'), | |||||
FileManagerField::new('image'), | |||||
GalleryManagerField::new('gallery'), | |||||
TextField::new('devAlias'), | |||||
ChoiceField::new('status') | |||||
->setChoices(['En ligne' => 1, 'Hors ligne' => 0]) | |||||
->setFormTypeOption('expanded', true) | |||||
->setFormTypeOption('multiple', false) | |||||
->setCustomOption('widget', false) | |||||
]; | |||||
} | |||||
public function configureFields(string $pageName): iterable | |||||
{ | |||||
return [ | |||||
TextField::new('title'), | |||||
CKEditorField::new('description'), | |||||
FileManagerField::new('image'), | |||||
GalleryManagerField::new('gallery'), | |||||
TextField::new('devAlias'), | |||||
ChoiceField::new('status') | |||||
->setChoices(['En ligne' => 1, 'Hors ligne' => 0]) | |||||
->setFormTypeOption('expanded', true) | |||||
->setFormTypeOption('multiple', false) | |||||
->setCustomOption('widget', false) | |||||
]; | |||||
} | |||||
} | } |
namespace App\Twig; | namespace App\Twig; | ||||
use App\Entity\Page; | |||||
use App\Entity\Site\Page; | |||||
use Lc\SovBundle\Doctrine\EntityManager; | use Lc\SovBundle\Doctrine\EntityManager; | ||||
use Twig\Extension\AbstractExtension; | use Twig\Extension\AbstractExtension; | ||||
use Twig\TwigFilter; | use Twig\TwigFilter; |
"config/routes/dev/web_profiler.yaml" | "config/routes/dev/web_profiler.yaml" | ||||
] | ] | ||||
}, | }, | ||||
"symfony/webpack-encore-bundle": { | |||||
"version": "1.9", | |||||
"recipe": { | |||||
"repo": "github.com/symfony/recipes", | |||||
"branch": "master", | |||||
"version": "1.9", | |||||
"ref": "9399a0bfc6ee7a0c019f952bca46d6a6045dd451" | |||||
}, | |||||
"files": [ | |||||
"assets/app.js", | |||||
"assets/bootstrap.js", | |||||
"assets/controllers.json", | |||||
"assets/controllers/hello_controller.js", | |||||
"assets/styles/app.css", | |||||
"config/packages/assets.yaml", | |||||
"config/packages/prod/webpack_encore.yaml", | |||||
"config/packages/test/webpack_encore.yaml", | |||||
"config/packages/webpack_encore.yaml", | |||||
"package.json", | |||||
"webpack.config.js" | |||||
] | |||||
}, | |||||
"symfony/yaml": { | "symfony/yaml": { | ||||
"version": "v5.2.7" | "version": "v5.2.7" | ||||
}, | }, |
<link rel="icon" type="image/png" href="{{ asset('assets/img/favicon.png') }}"/> | <link rel="icon" type="image/png" href="{{ asset('assets/img/favicon.png') }}"/> | ||||
{% block stylesheets %}{% endblock %} | |||||
{% block stylesheets %} | |||||
{{ encore_entry_link_tags('backend-common') }} | |||||
{% endblock %} | |||||
</head> | </head> | ||||
<body> | <body> | ||||
{% block body %} | {% block body %} | ||||
{% endblock %} | {% endblock %} | ||||
{% block javascripts %}{% endblock %} | |||||
{% block javascripts %} | |||||
{{ encore_entry_script_tags('backend-common') }} | |||||
{% endblock %} | |||||
</body> | </body> | ||||
</html> | </html> |
const Encore = require('@symfony/webpack-encore'); | |||||
// Manually configure the runtime environment if not already configured yet by the "encore" command. | |||||
// It's useful when you use tools that rely on webpack.config.js file. | |||||
if (!Encore.isRuntimeEnvironmentConfigured()) { | |||||
Encore.configureRuntimeEnvironment(process.env.NODE_ENV || 'dev'); | |||||
} | |||||
Encore | |||||
// directory where compiled assets will be stored | |||||
.setOutputPath('public/build/') | |||||
// public path used by the web server to access the output path | |||||
.setPublicPath('/build') | |||||
// only needed for CDN's or sub-directory deploy | |||||
//.setManifestKeyPrefix('build/') | |||||
.enableSassLoader() | |||||
/* | |||||
* ENTRY CONFIG | |||||
* | |||||
* Each entry will result in one JavaScript file (e.g. app.js) | |||||
* and one CSS file (e.g. app.css) if your JavaScript imports CSS. | |||||
*/ | |||||
//.addEntry('backend-common', './assets/apps/backend/common/app.common.js') | |||||
.addEntry('backend-common', './Lc/SovBundle/Resources/assets/apps/backend/common/app.common.js') | |||||
//.addEntry('easyadmin', './vendor/easycorp/easyadmin-bundle/assets/js/app.js') | |||||
// enables the Symfony UX Stimulus bridge (used in assets/bootstrap.js) | |||||
.enableStimulusBridge('./assets/controllers.json') | |||||
// When enabled, Webpack "splits" your files into smaller pieces for greater optimization. | |||||
.splitEntryChunks() | |||||
// will require an extra script tag for runtime.js | |||||
// but, you probably want this, unless you're building a single-page app | |||||
.enableSingleRuntimeChunk() | |||||
/* | |||||
* FEATURE CONFIG | |||||
* | |||||
* Enable & configure other features below. For a full | |||||
* list of features, see: | |||||
* https://symfony.com/doc/current/frontend.html#adding-more-features | |||||
*/ | |||||
.cleanupOutputBeforeBuild() | |||||
.enableBuildNotifications() | |||||
.enableSourceMaps(!Encore.isProduction()) | |||||
// enables hashed filenames (e.g. app.abc123.css) | |||||
.enableVersioning(Encore.isProduction()) | |||||
.configureBabel((config) => { | |||||
config.plugins.push('@babel/plugin-proposal-class-properties'); | |||||
}) | |||||
// enables @babel/preset-env polyfills | |||||
.configureBabelPresetEnv((config) => { | |||||
config.useBuiltIns = 'usage'; | |||||
config.corejs = 3; | |||||
}) | |||||
// enables Sass/SCSS support | |||||
//.enableSassLoader() | |||||
// uncomment if you use TypeScript | |||||
//.enableTypeScriptLoader() | |||||
// uncomment if you use React | |||||
//.enableReactPreset() | |||||
// uncomment to get integrity="..." attributes on your script & link tags | |||||
// requires WebpackEncoreBundle 1.4 or higher | |||||
//.enableIntegrityHashes(Encore.isProduction()) | |||||
// uncomment if you're having problems with a jQuery plugin | |||||
//.autoProvidejQuery() | |||||
; | |||||
module.exports = Encore.getWebpackConfig(); |