2013-04-29 17 views
1

使用CakePHP,有可能通過將插入普通的JavaScript一個視圖中執行以下操作:如何將新行添加到CakePHP腳本塊?

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

不幸的是,如果你有多個echo語句,所有的文本被壓扁成1個長線。有什麼辦法來分割線和插入換行符?

我已經嘗試在echo'd語句的結尾添加\ n無濟於事。

我認爲有可能讓JS在正確使用分號的情況下全部正確運行,但它會造成痛苦的閱讀和調試體驗。

回答

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){ 
        ... 
'); 
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(); 
?> 
0

我不知道我正確理解你的問題,但設法逃脫你的\n因爲PHP將其解釋爲正常的字符串你的JavaScript採取前轉,因此,例如:

$first = "This is first line\\n"; 
$both = $first . "This is second line";