主頁 > 資料庫 > Magento2:語法錯誤,意外的'"',在phtml檔案中需要'-'或識別符號(T_STRING)或變數(T_VARIABLE)或數字(T_NUM_

Magento2:語法錯誤,意外的'"',在phtml檔案中需要'-'或識別符號(T_STRING)或變數(T_VARIABLE)或數字(T_NUM_

2021-12-16 03:38:37 資料庫

有人可以告訴我為什么會出現以下錯誤嗎?

決議錯誤:語法錯誤,意外的 '"',在 /app/vendor/magenest/module-instagram-shop/view/frontend/templates/ 中需要 '-' 或識別符號 (T_STRING) 或變數 (T_VARIABLE) 或數字 (T_NUM_STRING)第 161 行的滑塊/滑塊.phtml?

該檔案未修改。PHP 版本:PHP 7.2.30 (cli)(內置:2020 年 4 月 23 日 18:36:52)(NTS)short_open_tag = On。PHPStorm 的代碼檢查器沒有拋出任何問題。

我認為這可能與我的環境設定有關。如果我從檔案中洗掉所有內容(0 長度),則包含此小部件的頁面將正確呈現。該模塊已在后端正確設定。我難住了。非常感謝你!

這條線是

if ($widgetOptions["lazy_load"]) {

完整代碼:

<?php
if ($sliderBlock = $block->getSliderBlock()) {
    $widgetOptions = $sliderBlock->getWidgetOptions();
    $photos = $sliderBlock->getPhotos();
    $slickConfig   = $sliderBlock->getData();
    $totalItems    = $photos->getSize();
    $itemsPerSlide = $sliderBlock->getItemsPerSlide();

    $prefixElementClass = uniqid();

    $storyBlock = $sliderBlock->getStoryBlock(); ?>
    <!--    allow show widget if photos is not null -->
    <?php if ($photos->getSize() != 0 || $storyBlock != '') { ?>
        <div class="photo-slider-wrapper"
             id="slider-<?= $block->escapeHtmlAttr($prefixElementClass) ?>"
             style="display: none;">
            <div class="slider">
                <?= $block->getSharedPopupHtml($sliderBlock->getPhotoSource()) ?>
            </div>
            <div class="block-title">
                <h2 class="title"><?= $block->escapeHtml($sliderBlock->getTitle()) ?></h2>
            </div>
            <?= $storyBlock ?>
            <div class="block-content">
                <div class="block block-photo-slider slider-list container">
                    <?php if ($totalItems) { ?>
                        <div class="photos-wrapper">
                            <ul class="photos-slick slick-<?= $block->escapeHtmlAttr($prefixElementClass) ?>"
                                <?php
                                if ($widgetOptions["rtl"] == "true") {
                                    echo ("dir='rtl'");
                                }
                                ?>>
                                <?php
                                $count = 0;
                                /** @var \Magenest\InstagramShop\Model\Photo $photo */
                                foreach ($photos as $photo) {
                                    if (!$sliderBlock->isDefaultTemplate() && $count % $itemsPerSlide == 0) {
                                        echo $block->escapeHtml(
                                            '<li ><ul hljs-variable">$block->getItemsPerSlideClass()
                                            . '-photo">'
                                        );
                                    } ?>
                                    <li class="<?= $block->escapeHtmlAttr($photo->getPhotoId()) ?>
                                               instagram-photo
                                               <?php if ($sliderBlock->isDefaultTemplate()) {
                                                    echo 'default';
                                               } ?>"
                                        id="<?= $block->escapeHtmlAttr($photo->getPhotoId()) ?>">
                                        <a href="<?= $block->escapeUrl($photo->getUrl()) ?>"
                                           <?php if (!$sliderBlock->isDefaultTemplate()) {
                                                echo 'hljs-string">"';
                                           } ?>>
                                            <?php if ($widgetOptions["lazy_load"]): ?>
                                                <img data-lazy="<?= $sliderBlock->getPhotoSourceOptimize($photo) ?>"
                                                     alt="Magento 2:語法錯誤,意外的 '"',在 phtml 檔案中需要 '-' 或識別符號 (T_STRING) 或變數 (T_VARIABLE) 或數字 (T_NUM_STRING)"/>
                                            <?php else: ?>
                                                <img src="<?= $sliderBlock->getPhotoSourceOptimize($photo) ?>" alt="Magento 2:語法錯誤,意外的 '"',在 phtml 檔案中需要 '-' 或識別符號 (T_STRING) 或變數 (T_VARIABLE) 或數字 (T_NUM_STRING)"/>
                                            <?php endif; ?>
                                            <?php if ($photo->getMediaType() == 'VIDEO') { ?>
                                                <i hljs-string">"
                                                   style="
                                                        float: right;
                                                        margin: 5px;
                                                        font-size: 20px;
                                                        position: absolute;
                                                        right: 0;
                                                        top: 0">
                                                </i>
                                            <?php } ?>
                                            <div hljs-string">"></div>
                                            <div hljs-string">">
                                                <span hljs-string">">
                                                    <i hljs-string">">
                                                        <?= $block->escapeHtml($photo->getLikes()) ?>
                                                    </i>
                                                    <i hljs-string">">
                                                        <?= $block->escapeHtml($photo->getComments()) ?>
                                                    </i>
                                                </span>
                                                <p hljs-string">">
                                                    <?= $block->getPhotoCaption($photo->getCaption()) ?>
                                                </p>
                                            </div>
                                        </a>
                                        <?=  $sliderBlock->getLinkedProductsHtml($photo) ?>
                                        <?= $sliderBlock->getHotspotHtml($photo) ?>
                                        <?php if ($sliderBlock->canShowVideo()) {
                                            echo $sliderBlock->getVideoHtml($photo);
                                        } ?>
                                    </li>
                                    <?php
                                    $count  ;
                                    if (!$sliderBlock->isDefaultTemplate()
                                        && ($count % $itemsPerSlide == 0 || $count == $totalItems)) {
                                        echo ('</ul></li>');
                                    }
                                } ?>
                            </ul>
                        </div>
                        <?php if ($sliderBlock->displayGalleryButton()): ?>
                            <div hljs-string">">
                                <a href="<?= $block->escapeUrl($sliderBlock->getUrl('instagram/gallery/')) ?>"
                                   style="<?= $sliderBlock->getViewFullGalleryCss() ?>"
                                   hljs-string">">
                                    <?= $block->escapeHtml($sliderBlock->getViewFullGalleryTitle()) ?>
                                </a>
                            </div>
                        <?php endif; ?>
                    <?php } ?>
                </div>
            </div>
        </div>
    <?php } ?>

    <?php if ($photos->getSize()):
        $scriptString = <<<script
            require([
                'jquery',
                'photoModel',
                'slick'
            ], function ($, photoModel) {
                let item_number = {$block->escapeHtml($widgetOptions["items_number_desktop"])},
                    photos      = {$sliderBlock->getPhotosData($photos)},
                    photoSize   = {$block->escapeHtml($totalItems)};
                $('#slider-{$block->escapeHtml($prefixElementClass)}').on('init', function () {
                    $(this).attr('style', 'display: block;');
                });
                $('.photos-slick.slick-{$block->escapeHtml($prefixElementClass)}')
                    .on('afterChange', function (event, slick, currentSlide) {
                        //currentSlide is undefined on init -- set it to 0 in this case (currentSlide is 0 based)
                        let i = (currentSlide ? currentSlide : 0)   1;
                        // no dots -> no slides
                        if (slick.\$dots) {
                            // use dots to get some count information
                                dotsLength = (slick.\$dots[0].children.length);
                            if (i == dotsLength) {
                                $(this).slick('slickGoTo', 0, true);
                            }
                        }
                        if (i <= photoSize) {
                            let iterator = item_number   20, photo = [];
                            for (var j = 0; j < iterator; j  ) {
                                if(typeof photos[i item_number] != 'undefined') {
                                    photo.push(photos[i item_number]);
                                    i  ;
                                }
                            }
                            photoModel.setPhotos(photo);
                        }
                    });

                $('.photos-slick.slick-{$block->escapeHtml($prefixElementClass)}').slick({
                    slidesToShow: {$widgetOptions["items_number_desktop"]},
                    slidesToScroll: {$widgetOptions["slides_to_scroll"]},
                    infinite: false,
                    dots: {$block->escapeHtml($widgetOptions["animation_dots"])},
                    arrows: {$block->escapeHtml($widgetOptions["animation_arrows"])},
        script;
        if ($widgetOptions["lazy_load"]) {
            $scriptString .= <<<script
                    lazyLoad: 'ondemand',
            script;
        }
        $scriptString .= <<<script
                    autoplay: {$block->escapeHtml($widgetOptions["autoplay"])},
                    autoplaySpeed: {$block->escapeHtml($widgetOptions["autoplaySpeed"])},
                    rtl: {$block->escapeHtml($widgetOptions["rtl"])},
                    responsive: [
                        {
                            breakpoint: 1023,
                            settings: {
                                slidesToShow: {$widgetOptions["items_number_tablet"]},
                            }
                        },
                        {
                            breakpoint: 640,
                            settings: {
                                slidesToShow: {$widgetOptions["items_number_mobile"]},
                            }
                        }
                    ]
                }).slick('setPosition');
            });
            require(['mage/url'], function (urlBuilder) {
                return urlBuilder.setBaseUrl('{$block->escapeUrl($sliderBlock->getBaseUrl())}');
            });
        script;
        ?>
        <?= isset($secureRenderer)
        ? $secureRenderer->renderTag('script', [], $scriptString, false)
        : "<script>$scriptString</script>" ?>

        <?php
        $canShowVideo = $sliderBlock->canShowVideo() ? 'true' : 'false';
        $scriptString = <<<script
        {
            "#slider-{$block->escapeHtml($prefixElementClass)}": {
                "instagramPopup": {
                    "photos" : {$sliderBlock->getPhotosData($photos, true)},
                    "canShowVideo": {$canShowVideo},
                    "prefixContainer":".slider",
                    "prefixElement":"ul.slick-{$block->escapeHtml($prefixElementClass)} li",
                    "photoType": {$block->escapeHtml($sliderBlock->getPhotoType())},
                    "prefixElementClass": "#slider-{$block->escapeHtml($prefixElementClass)}",
                    "baseMediaUrl": "{$block->escapeUrl($block->getBaseMediaUrl())}"
                }
            }
        }
        script;
        ?>
        <?= isset($secureRenderer)
        ? $secureRenderer->renderTag('script', ['type' => 'text/x-magento-init'], $scriptString, false)
        : "<script type='text/x-magento-init'>$scriptString</script>" ?>
    <?php elseif ($storyBlock != ''):
        $scriptString = <<<script
            require(['jquery'], function ($) {
                $('#slider-{$block->escapeHtml($prefixElementClass)}').css('display', 'block');
            })
        script;
        ?>
        <?= isset($secureRenderer)
            ? $secureRenderer->renderTag('script', [], $scriptString, false)
            : "<script>$scriptString</script>" ?>
    <?php endif; ?>
    <?php
} ?>

uj5u.com熱心網友回復:

該代碼可能不是為 7.2 撰寫的,但由于您使用的是 7.2,因此script;在該行的開頭移動就足夠了:

[...]

結束識別符號可以用空格或制表符縮進,在這種情況下,縮進將從檔案字串中的所有行中洗掉。在 PHP 7.3.0 之前,結束識別符號必須從行的第一列開始。

[...]

Heredoc 的檔案頁面

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/381747.html

標籤:php 马恩托 magento2

上一篇:Perl腳本中的正則運算式字串提取

下一篇:f-string內的函式回傳字串外的函式,字串內回傳None

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more