it-swarm-vi.com

Phát triển plugin - lỗi phân tích cú pháp: lỗi cú pháp, 's' (T_STRING) không mong muốn

Tôi đang cố gắng phát triển plugin đầu tiên của mình cho Joomla, đây chỉ là một plugin đơn giản đặt một số javascript ngay trước khi đóng. Các javascript hoạt động tốt nếu tôi đặt nó trực tiếp trong index.php cho mẫu để tôi tự tin vào js. Plugin của tôi tuy nhiên đang gặp lỗi

Parse error: syntax error, unexpected 's' (T_STRING) in C:\xampp\blah\blah\plugins\system\reftagger\reftagger.php on line 50

Tôi nghĩ rằng nó có liên quan đến việc sử dụng dấu ngoặc kép trên dòng 49 (trong đó thêm g.src) đang ném mọi thứ ra khỏi đòn đánh. Đoạn mã dưới đây hiển thị tập lệnh mà tôi đang cố thêm, bao gồm dấu ngoặc kép

 $ReftaggerOut = "
            <script type='text/javascript'>
                var refTagger = {
                    settings: {
                        bibleVersion: ".$BibleTranslation."            
                    }
                };
                (function(d, t) {
                    var g = d.createElement(t), s = d.getElementsByTagName(t)[0];
                    g.src = "//api.reftagger.com/v2/RefTagger.js";
                    s.parentNode.insertBefore(g, s);
                }(document, "script"));

            </script>

    ";      

Tôi đã cố gắng

  1. để thay đổi g.src thành dấu ngoặc đơn
  2. làm cho nó một/"cho g.src
2
rowanwins

Đây là dấu ngoặc kép trong tập lệnh/chuỗi. Thử đi:

<?php
$ReftaggerOut = "
    <script type='text/javascript'>
        var refTagger = {
            settings: {
            bibleVersion: ".$BibleTranslation."            
            }
        };
        (function(d, t) {
            var g = d.createElement(t), s = d.getElementsByTagName(t)[0];
            g.src = '//api.reftagger.com/v2/RefTagger.js';
            s.parentNode.insertBefore(g, s);
        }(document, 'script'));
    </script>
";
?>

Hoặc nếu bạn muốn dấu ngoặc kép, hãy thoát chúng như thế này:

$ReftaggerOut = "
    <script type='text/javascript'>
        var refTagger = {
            settings: {
            bibleVersion: ".$BibleTranslation."            
            }
        };
        (function(d, t) {
            var g = d.createElement(t), s = d.getElementsByTagName(t)[0];
            g.src = \"//api.reftagger.com/v2/RefTagger.js\";
            s.parentNode.insertBefore(g, s);
        }(document, \"script\"));
    </script>
";
4
GDP

Tôi nhận ra rằng bạn đã giải quyết vấn đề lỗi cú pháp, nhưng cách đúng để giải quyết vấn đề này là không chèn javascript với PHP theo cách này.

Những gì bạn nên làm là:

1) tạo tệp javascript của bạn trong media/plg_yourplugin/js/your-js-file.js

2) in PHP sử dụng API thư viện JHTML để thêm tệp javascript vào khu vực index.php.

Đây là một bài đăng trên blog của @Michael về cách thực hiện việc này đúng cách: http://www.babdev.com/blog/139-use-the-media-folder-allow-overridable-media

3
Chad Windnagle

Bạn có một lỗi PHP phân tích cú pháp.

Nếu chuỗi của bạn bắt đầu bằng " và kết thúc bằng ". Tất cả nội bộ " cần phải \".

0
Anibal