CakePHP 3 插件在模板文件中引用 JS
CakePHP 3 Plugin reference JS in a Template file
我的 register.ctp 模板文件在我的用户插件中,我想引用也在我的插件中的 js 文件
vendor/cakedc/users/webroot/js/password-compare.js
如何在我的模板文件中引用此 js 文件?
我试过了
<?= $this->Html->script("password-compare"); ?>
<?= $this->Html->script("Users.password-compare"); ?>
<?= $this->Html->script("/Users/webroot/js/password-compare"); ?>
然后
<?= $this->fetch('script') ?>
但到目前为止没有任何效果...有任何提示吗?
在 Cake 中使用 "plugins" 这个词是不明确的,因为插件可以在 plugins/
目录中本地化,也可以(通过 Composer)安装到 vendor/
目录。
HtmlHelper 中 script();
方法中的正确参数是 Users.password-compare
,但这适用于 plugins/
目录中的插件。
如果您像供应商一样使用插件并且您在 bootstrap.php 文件中有 loadPlugin('CakeDC/Users')
并且文件 "vendor/cakephp-plugins.php" 中有正确的路径,那么一切都应该工作正常。
我最后只是添加了以下代码,工作正常但不如我喜欢的那么优雅...
<script src="<?= $this->request->webroot ?>/cake_d_c/users/js/password-compare.js"></script>
在 Cakephp 3.4 及以上的版本中,这项工作对我来说:
<?php
/**
* @var \App\View\AppView $this
**/
$this->Html->script('password-compare.js', ['block' => true]);
?>
没有 ['block' => true] 不在 html 脚本标签中显示。
对于不熟悉短回显标签的人来说,不是很明显的小细节。
这个:
<?= $this->Html->script("Users.password-compare"); ?>
等同于:
<?php echo $this->Html->script("Users.password-compare"); ?>
您需要回显资产。这是我的脚本未加载的问题,因为我是从 2.10 迁移过来的,那里不需要 echo。
请看:https://book.cakephp.org/3/en/plugins.html#linking-to-assets-in-plugins
我的 register.ctp 模板文件在我的用户插件中,我想引用也在我的插件中的 js 文件
vendor/cakedc/users/webroot/js/password-compare.js
如何在我的模板文件中引用此 js 文件?
我试过了
<?= $this->Html->script("password-compare"); ?>
<?= $this->Html->script("Users.password-compare"); ?>
<?= $this->Html->script("/Users/webroot/js/password-compare"); ?>
然后
<?= $this->fetch('script') ?>
但到目前为止没有任何效果...有任何提示吗?
在 Cake 中使用 "plugins" 这个词是不明确的,因为插件可以在 plugins/
目录中本地化,也可以(通过 Composer)安装到 vendor/
目录。
HtmlHelper 中 script();
方法中的正确参数是 Users.password-compare
,但这适用于 plugins/
目录中的插件。
如果您像供应商一样使用插件并且您在 bootstrap.php 文件中有 loadPlugin('CakeDC/Users')
并且文件 "vendor/cakephp-plugins.php" 中有正确的路径,那么一切都应该工作正常。
我最后只是添加了以下代码,工作正常但不如我喜欢的那么优雅...
<script src="<?= $this->request->webroot ?>/cake_d_c/users/js/password-compare.js"></script>
在 Cakephp 3.4 及以上的版本中,这项工作对我来说:
<?php
/**
* @var \App\View\AppView $this
**/
$this->Html->script('password-compare.js', ['block' => true]);
?>
没有 ['block' => true] 不在 html 脚本标签中显示。
对于不熟悉短回显标签的人来说,不是很明显的小细节。
这个:
<?= $this->Html->script("Users.password-compare"); ?>
等同于:
<?php echo $this->Html->script("Users.password-compare"); ?>
您需要回显资产。这是我的脚本未加载的问题,因为我是从 2.10 迁移过来的,那里不需要 echo。
请看:https://book.cakephp.org/3/en/plugins.html#linking-to-assets-in-plugins