問題
formに初期値を入れたくて、LaravelのEloquentで取得した行から
該当するカラムを取得する際に、unicodeでエンコードされた文字列が出力される。
controller.php
$content = Model::where('id', $id)->first()->pluck('content');
return view('admin.event_chat')
->with('content', $content)
view.blade.php
<form action="/Admin/eventChatSend" method="POST">
@csrf
@if (isset($content))
<input type="text" name="content" value="{{ $content }}">
@else
<input type="text" name="content" placeholder="定型文はありません">
@endif
<input type="submit" value="送信">
</form>
このように実装した場合、unicodeでエンコードされた文字列content
が挿入されます。
解決案
まぁ、pluck()を通すとunicodeでエンコードされるということは
当たり前のようにpluck()を使わなければいいのでView側で取ってくるか$content = $row->content
で取得すればいいです。前者で実装してみました。
controller.php
$row = Model::where('id', $id)->first();
return view('admin.event_chat')
->with('row', $row)
view.blade.php
<form action="/Admin/eventChatSend" method="POST">
@csrf
@if (isset($row))
<input type="text" name="content" value="{{ $row->content }}">
@else
<input type="text" name="content" placeholder="定型文はありません">
@endif
<input type="submit" value="送信">
</form>
$row
がある時は必ず、content
がある程での実装となっています。
まとめ
Laravelでカラムを取得するpluck()を通すとunicodeでエンコードされてしまうので
$row->content
で回避するか、View川で取得すると
utf8でエンコードされた文字列が返ってきます。
どなたかpluck()
で文字列をutf8でエンコードする方法をご存知の方はコメントお願いします!!