2017-08-19 22 views
0

ですから、現時点で直面している問題は次のとおりです。私は出発ボードをこのように表示しようとしていますDeparture Board 1このボードはlaravelを使って作成されました。私は現在PHPでそれをやろうとしています。私が実行している主要な問題は、あなたは、私が代入しようとしているJavaScriptで新しい行をPHPで作成する方法

(['EIN139 EIDW KBOS<br>EIN13T EIDW KBOS<br>EIN1GE EIDW CYYZ<br>RYR1923 EIDW 
EPKK<br>RYR35CW EIDW EGKK<br>RYR67C EIDW EGBB<br>RYR681C EIDW EGBB<br>RYR6CM 
EIDW EHAM<br>RYR73WK EIDW EGGW<br>RYR81SU EIDW LEGE<br>RYR87CJ EIDW 
EGBB<br>']) 

それが1行にまだあるが、代わりに、それは別の行にあることの表示され表示されるように意図されたHTMLソースコードのすべてを見つけるでしょう以下の文字列は、それがボードAs ShownにBRを示し"br" for "\ n";と "\ n";まだ運がない。

var board = new DepartureBoard (document.getElementById ('test'), { 
rowCount: 10, letterCount: 20 }); 
board.setValue (['<?php foreach ($data as $info) { 
if (strlen($info->callsign) > 6) { 
    echo $info->callsign.' '; 
    echo $info->origin.' '; 
    echo $info->destination."<br>"; 
} elseif (strlen($info->callsign) < 6) { 
    echo $info->callsign.' '; 
    echo $info->origin.' '; 
    echo $info->destination."<br>"; 
} else { 
    echo $info->callsign.' '; 
    echo $info->origin.' '; 
    echo $info->destination."<br>"; 
} 
}?>']); 

私は逃したものがありますか?

 @foreach ($data as $info) 
     '{{$info->callsign}} {{$info->origin}} {{$info->destination}}', 
     @endforeach 

これよりもあまり複雑ではないlaravelのコード。 laravelコードが自動的に文字列を分割し、上記のコードはPHP_EOLを試してみません おかげ

+0

あなたが\ nを使用するとどうなるでしょうか。また、実際にデータを表示する方法もわかりません。さらに、テンプレート言語(ヒント、純粋なPHPはさらに簡単になるでしょう)でとても簡単なのであれば、それはなぜですか? –

+0

"\ r \ n"を試して文字列を ""の代わりに ""の間に入れてください – SolidSnake

答えて

0

あなたのlaravelバージョンでは複数の配列要素が追加されているため、ネイティブPHPバージョンではすべてを同じ配列要素に入れています。

この:

@foreach ($data as $info) 
    '{{$info->callsign}} {{$info->origin}} {{$info->destination}}', 
@endforeach 
は、あなたの他のバージョンがあるように、この

'BRKS SKDFK SDFSDF SDFKE SDFSk SDFSDF SDFDSF EGFAS SDFSE' 

の周りにコードを変更して生成しようとしている間に

'BRKS SKDFK SDFSDF', 'SDFKE SDFSk SDFSDF', 'SDFDSF EGFAS SDFSE' 

のようなものを作るつもりです行を別の配列要素に分割します。

board.setValue ([<?php foreach ($data as $info) { 
echo "'"; 
// echo actual line data here 
echo "',"; 
?>]); 

各繰り返しで単一引用符がエコーされることに注意してください。これは最適な方法ではないことに注意してください。後に続くカンマで終わる可能性が高いからです。 phpのarray_mapを使用して各行を作成し、結果をjson_encodeして必要な箇所にエコーすることができます。

$lineFunction = function($info) { 
    $line = ""; 
    if (strlen($info->callsign) > 6) { 
     $line .= $info->callsign.' '. 
       $info->origin.' '. 
       $info->destination; 
    } elseif (strlen($info->callsign) < 6) { 
     $line .= $info->callsign.' '. 
       $info->origin.' '. 
       $info->destination; 
    } else { 
     $line .= $info->callsign.' '. 
       $info->origin.' '. 
       $info->destination; 
    } 
    return $line; 
}; 

$lines = array_map($lineFunction, $data); 
?> 
board.setValue (<?php echo json_encode($lines);?>); 
0

を行い、なぜ私は、これはテキストエリアまたは類似のものである推測しています。..

var board = new DepartureBoard (document.getElementById ('test'), { 
rowCount: 10, letterCount: 20 }); 
board.setValue (['<?php foreach ($data as $info) { 
if (strlen($info->callsign) > 6) { 
    echo $info->callsign.' '; 
    echo $info->origin.' '; 
    echo $info->destination.PHP_EOL; 
} elseif (strlen($info->callsign) < 6) { 
    echo $info->callsign.' '; 
    echo $info->origin.' '; 
    echo $info->destination.PHP_EOL; 
} else { 
    echo $info->callsign.' '; 
    echo $info->origin.' '; 
    echo $info->destination.PHP_EOL; 
} 
}?>']); 
0

が表示されません。
このような要素内の行を制動するには、htmlではなく\nを使用する必要があります。

さらに、テンプレート言語を使用すると(純粋なPHPがさらに簡単になります)、なぜそれを使用しないのですか?

+0

"
"の代わりに\ nをコードに含めましたが、問題が発生してからボードが消えるhttps://imgur.com/2b2n9bf、エラー出力あり –

0

Laravelブレイドエンジン

利用{!! '<br>' !!}の代わり{{ '<br>' }}

Laravelは、通常のエコーブラケット{{}}内の文字を自動的にエスケープします。

注意:これはXSSのエントリポイントです。

関連する問題