gpt4 book ai didi

php - Symfony 4,包括来自供应商目录的 Assets

转载 作者:行者123 更新时间:2023-12-04 14:00:32 26 4
gpt4 key购买 nike

我想从我的 Twig 模板加载供应商 Assets ,用供应商目录中的 Composer 下载。

使用相对路径是一种解决方案(在此示例中,我将包含引导 css,但对于 Composer 所需的任何其他库,如 jQuery、jQueryUI 等,同样的问题。)

<link rel="stylesheet" href="{{ asset('../vendor/twbs/bootstrap/dist/css/bootstrap.min.css') }}" >

Symfony 文档建议使用 assets:install 来生成从供应商目录到公共(public)目录的符号链接(symbolic link),但我无法理解它是如何工作的。
assets:install -h 不太清楚,无法让我了解如何将特定供应商路径链接到公共(public)目录。

创建一个simlink
ln -s /path/of/vendor/lib /path/public/dir

工作正常,但是每次我寻找 Composer 的更新时,创建的符号链接(symbolic link)都会被删除。

关于包含来自供应商目录的 Assets 的“最佳实践”的任何想法?

谢谢

最佳答案

您不能告诉 assets:install 链接和任意供应商目录的原因是该命令旨在循环通过已安装捆绑包的列表并链接已知目录( Resources/public )目录(如果存在)。它依赖于短包名称和现有目录,因此它只能与 symfony 包一起使用,不支持其他库,如 bootstrap 或 jquery。 (链接到当前 command source )。
现在处理前端库的推荐方法是 encore
在不可能的情况下,您可以使用 composer scripts 。我不会将此称为“最佳实践”,最终可能会带来比其值(value)更多的麻烦,但这是您可以考虑的一种选择。
您将创建一个 shell、php 脚本或控制台命令,基本上复制 assets:install 的功能以链接您的库 Assets 。安装新库时仍需要手动更新脚本,但可以将其配置为在安装或更新软件包后自动运行。
将这个简单的示例 bash 脚本复制到您的项目目录中,将其命名为 install_vendors.sh :

#!/bin/bash

BASE_PATH=`pwd`
PUBLIC="public"

if [ "$1" != "" ]; then
PUBLIC=$1
fi;

PUBLIC=${BASE_PATH}/${PUBLIC}/vendor
VENDOR=${BASE_PATH}/vendor

rm $PUBLIC -rf
mkdir $PUBLIC

function link_asset
{
SOURCE_DIR=${VENDOR}/$1
TARGET_DIR=${PUBLIC}/$2
ln -s $SOURCE_DIR $TARGET_DIR
}

link_asset twbs/bootstrap/dist bootstrap
将其添加到 scriptscomposer.jsonauto-scripts 部分:
"scripts": {
"vendors:install": "bash install_vendors.sh",
"auto-scripts": {
"cache:clear": "symfony-cmd",
"assets:install %PUBLIC_DIR%": "symfony-cmd"
"@vendors:install"
},
// ...
}
您也可以随时使用 composer run vendors:install 执行它。
然后将它们包含在您的 Twig 文件中: {{ asset('vendor/bootstrap/css/bootstrap.min.css') }}

关于php - Symfony 4,包括来自供应商目录的 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48468639/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com