-1

以下は、私のphpファイルの1つからのコードです。コンパイルエラーがあるようです。私はphpが初めてです。

以下のphp関数コードで何が問題なのか教えてください。

function eshop_extras_checkout($echo){


    $echo .= '<script>

    $(".formGroup").hide();
$('#chooseForm input:checkbox').on('change', function() {
    if($(this).is(':checked')) {
        $("#" + $(this).val()).show();
    }
    else {
        $("#" + $(this).val()).hide();
    }   
});
​   
    </script>';

    $echo .= '<fieldset class="eshop eshop_extra">' . "\n";


     $echo .= ' <form id="chooseForm">
    <input type="checkbox" name="form1" value="form1"> Form1<br>
    <input type="checkbox" name="form1" value="form2"> Form2<br>
</form>

<form id="form1" class="formGroup">
    <h2>FORM 1</h2>
    <label>Name</label><input type="text"> <br>
    <label>Address</label><input type="text">
</form>

<form id="form2" class="formGroup">
    <h2>FORM 2</h2>
    <label>Username</label><input type="text"> <br>
</form>';


    $echo .= '<legend>Articles Order Form</legend>' . "\n";



    return $echo;


}

これは私のブラウザのエラーです:

解析エラー: 構文エラー、43 行目の /home/harris12/public_html/somedomain.com/wp-content/plugins/eshop-extras/eshop-extras.php の予期しない T_IF

4

5 に答える 5

2

この行で

$('#chooseForm input:checkbox').on('change', function() {

コードに'文字が含まれているため、echoコマンドを終了します。そのため、その解釈されたphpコードは明らかにエラーになります。\'でエスケープしてみてください

于 2012-10-19T21:43:44.823 に答える
1

'(アポストロフィ)をエスケープする必要があります

$('#chooseForm input:checkbox').on('change', function() {

それはあなたの最初のエコーステートメントを破っているので

于 2012-10-19T21:43:25.543 に答える
1

連結先の最初の文字列に$echoは、単一引用符の中に単一引用符があります。

if($(this).is(':checked'))

それらを二重引用符に変更してみてください。

この文字列を連結して構築しなければならない理由はありますか? 実際には、PHP で何かを実行しているようには見えません。これを逆にして、このマークアップをすべてそのままにしておく必要がありますが、実際の PHP コードには<? ... ?>.

于 2012-10-19T21:49:18.570 に答える
1

次のようにしてみてください。

 <?php
function eshop_extras_checkout($echo){


    $echo .= '<script>

    $(".formGroup").hide();
    $("#chooseForm input:checkbox").on("change", function() {
        if($(this).is(":checked")) {
            $("#" + $(this).val()).show();
        }
        else {
            $("#" + $(this).val()).hide();
        }
    });
    ​
</script>';

    $echo .= '<fieldset class="eshop eshop_extra">' . "\n";


    $echo .= ' <form id="chooseForm">
        <input type="checkbox" name="form1" value="form1"> Form1<br>
        <input type="checkbox" name="form1" value="form2"> Form2<br>
    </form>

    <form id="form1" class="formGroup">
        <h2>FORM 1</h2>
        <label>Name</label><input type="text"> <br>
        <label>Address</label><input type="text">
    </form>

    <form id="form2" class="formGroup">
        <h2>FORM 2</h2>
        <label>Username</label><input type="text"> <br>
    </form>';


    $echo .= '<legend>Articles Order Form</legend>' . "\n";



    return $echo;
}
    ?>

アポストロフィをエスケープするか、二重引用符を使用する必要があります。

于 2012-10-19T21:50:24.070 に答える
0

HEREDOC を使用して書き直したものを次に示します。

function eshop_extras_checkout($output){
  $output .= <<<ESHOP_SCRIPT
<script>
   $(".formGroup").hide();
  $('#chooseForm input:checkbox').on('change', function() {
  if($(this).is(':checked')) {
    $("#" + $(this).val()).show();
  }
  else {
     $("#" + $(this).val()).hide();
  }   
  });
</script>
<fieldset class="eshop eshop_extra">
 <form id="chooseForm">
  <input type="checkbox" name="form1" value="form1" /> Form1<br />
  <input type="checkbox" name="form1" value="form2" /> Form2<br />
 </form>
 <form id="form1" class="formGroup">
  <h2>FORM 1</h2>
  <label>Name</label><input type="text" /> <br>
  <label>Address</label><input type="text" />
 </form>
 <form id="form2" class="formGroup">
  <h2>FORM 2</h2>
  <label>Username</label><input type="text" /> <br>
 </form>
 <legend>Articles Order Form</legend>
 ESHOP_SCRIPT;
 return $output;
}
于 2012-10-19T21:56:39.750 に答える