我正在尝试在我的teplate中添加脚本,但它经常会出错:
解析错误:语法错误,意外T_CONSTANT_ENCAPSED_STRING Z:\ home \ localhost \ www \ RealEstate \ templates \ real_estate \ index.php on 第21行
这是我的代码:
<?php
defined('_JEXEC') or die;
$app = JFactory::getApplication();
$doc = JFactory::getDocument();
$user = JFactory::getUser();
$this->language = $doc->language;
$this->direction = $doc->direction;
$params = $app->getTemplate(true)->params;
$doc->addStyleSheet('templates/' . $this->template . '/css/swiper.min.css');
$doc->addStyleSheet('templates/' . $this->template . '/css/style.css');
JHtml::_('jquery.framework');
$doc->addScript('templates/' . $this->template . '/js/swiper.min.js');
$doc->addScriptDeclaration('
jQuery(document).ready(function() {
var swiper = new Swiper('.swiper-container', {
nextButton: '.swiper-button-next',
prevButton: '.swiper-button-prev',
pagination: '.swiper-pagination',
slidesPerView: 3,
slidesPerColumn: 2,
paginationClickable: true,
spaceBetween: -15,
});
});
');
?>
我也在尝试这个:
JHtml::_('jquery.framework', false);
$doc->addScript('templates/' . $this->template . '/js/swiper.min.js');
$doc->addScriptDeclaration('
$(document).ready(function() {
var swiper = new Swiper('.swiper-container', {
nextButton: '.swiper-button-next',
prevButton: '.swiper-button-prev',
pagination: '.swiper-pagination',
slidesPerView: 3,
slidesPerColumn: 2,
paginationClickable: true,
spaceBetween: -15,
});
});
');
两者都不起作用但会出错。 你能不能让我们了解我做错了什么。
答案 0 :(得分:2)
您正在以错误的方式连接字符串
将该脚本放在双引号中
$doc->addScriptDeclaration("
jQuery(document).ready(function() {
var swiper = new Swiper('.swiper-container', {
nextButton: '.swiper-button-next',
prevButton: '.swiper-button-prev',
pagination: '.swiper-pagination',
slidesPerView: 3,
slidesPerColumn: 2,
paginationClickable: true,
spaceBetween: -15,
});
});
");
答案 1 :(得分:2)
Try:
$doc->addScriptDeclaration('
jQuery(document).ready(function() {
var swiper = new Swiper(\'.swiper-container\', {
nextButton: \'.swiper-button-next\',
prevButton: \'.swiper-button-prev\',
pagination: \'.swiper-pagination\',
slidesPerView: 3,
slidesPerColumn: 2,
paginationClickable: true,
spaceBetween: -15,
});
});
');
答案 2 :(得分:1)
另一种分隔字符串而不需要转义引号的方法是 Heredoc 语法。
$doc->addScriptDeclaration(<<<JS_SCRIPT
$(document).ready(function() {
var swiper = new Swiper('.swiper-container', {
nextButton: '.swiper-button-next',
prevButton: '.swiper-button-prev',
pagination: '.swiper-pagination',
slidesPerView: 3,
slidesPerColumn: 2,
paginationClickable: true,
spaceBetween: -15,
});
});
JS_SCRIPT
);
Heredoc 文本的行为就像一个双引号字符串,没有 双引号。这意味着heredoc中的引号不需要 已转义但仍可使用转义码listed above。 变量被扩展,但必须同样谨慎 用字符串表示heredoc中的复杂变量。 结束标识符必须从该行的第一列开始。 此外,标识符必须遵循与任何其他标识符相同的命名规则 PHP中的标签:它必须只包含字母数字字符和 下划线,并且必须以非数字字符或下划线开头。
警告请注意具有结束标识符的行非常重要 必须不包含其他字符,分号(;)除外。这意味着 特别是标识符可能没有缩进,也可能没有 分号前后的任何空格或制表符。这也是 重要的是要意识到结束前的第一个角色 identifier必须是本地操作系统定义的换行符。 这是在UNIX系统上的\ n,包括Mac OS X.结束分隔符 还必须跟一个换行符。
如果此规则被破坏且结束标识符不是“干净”,则为 不会被视为结束标识符,PHP将继续 寻找一个。如果之前未找到正确的结算标识符 当前文件的结尾,最后会产生一个解析错误 线。
Heredocs不能用于初始化类属性。自PHP 5.3,此限制仅对包含变量的heredoc有效。
参考:Heredoc