1

CakePHP では、以下をビュー内に配置することで、通常の JavaScript を挿入することができます。

$this->Html->scriptStart(array('inline' => false));
echo 'alert("Hello world!");';
$this->Html->scriptEnd();

残念ながら、複数の echo ステートメントがある場合、すべてのテキストが 1 つの長い行に押しつぶされます。行を分割して改行を挿入する方法はありますか?

私はすでにエコーされたステートメントの最後に \n を追加しようとしましたが、役に立ちませんでした。

セミコロンを適切に使用することで、JS を 1 行で正しく実行することは可能だと思いますが、読むのもデバッグするのも面倒です。

4

3 に答える 3

2

必要がない場合は、PHP に入れないようにしてください。

<?php $this->Html->scriptStart(array('inline' => false)); ?>
     alert("Hello world!");
     alert("Hello world!");
<?php $this->Html->scriptEnd(); ?>

次に、通常の js フォーマットを使用します。

または、PHP_EOL文字列リテラル内にない改行をエコーするために使用できます。

<?php
     $this->Html->scriptStart(array('inline' => false));
     echo 'alert("Hello world!");' . PHP_EOL;
     echo 'alert("Hello world!");';
     $this->Html->scriptEnd();
?>
于 2013-04-29T05:20:09.173 に答える
0

あなたの質問を正しく理解しているかどうかはわかりませんが\n、javascriptが順番に変わる前にphpが通常の文字列として解釈するため、エスケープしてみてください。たとえば、次のようになります。

$first = "This is first line\\n";
$both  = $first . "This is second line";   
于 2013-04-29T05:25:58.410 に答える
0

次のように Js->buffer を使用して問題を解決しました。

echo $this->Js->buffer('$(\'<input type="button" id="instaSave" value="Save"/>\')
    .click(function(){ 
        $(this).val("Saving...");

        $(this).parents("form:first").ajaxSubmit({
            success: function(responseText, responseCode) {
                $(".food").each(function(fIndex){
                   ...
');
于 2013-05-11T05:58:03.513 に答える