我创建了一个调查网站,然后我想使用动态本地化,我需要在数据库中存储两种语言的所有内容。因此,如果用户在右上角选择“EN”,它应该以英文显示所有内容。我使用了反序列化和序列化,但我不断收到此错误消息:“unserialize(): Error at offset 31 of 54 bytes..
为了便于理解,这是我创建新调查的观点,如您所见,我将有 4 个字段,其中两个用于 EN,两个用于 AR。
<form method="POST" action="create" id="boolean">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<div class="row">
@foreach(LaravelLocalization::getSupportedLocales() as $key => $value)
<div class="input-field col s12">
<input name="title[{{ $key }}]" id="title" type="text" placeholder="title in {{ $value['name']}}">
<label for="title">Survey Title</label>
</div>
<div class="input-field col s12">
<textarea name="description[{{ $key }}]" id="description" class="materialize-textarea" placeholder="description in {{ $value['name']}}"></textarea>
<label for="description">Description</label>
</div>
@endforeach
<div class="input-field col s12">
<button class="btn waves-effect waves-light">Submit</button>
</div>
</div>
</form>
在 SurveyController.php 中,我在将值存储为两种语言的数组时使用了序列化。
public function create(Request $request, Survey $survey)
{
$survey->title= serialize($request->title);
$survey->description= serialize($request->description);
$survey ->save();
return Redirect::to("/survey/{$survey->id}");
}
因此,数据将像这样存储:
a:2:{s:2:"en";s:11:"Education";s:2:"ar";s:16:"التعليم";}
我知道我需要反序列化数组以帮助我显示一种语言,这取决于用户已经选择的语言。
这是将显示调查标题的视图。
@forelse ($surveys as $survey)
<li class="collection-item">
<div>
{{ link_to_route('detail.survey', unserialize ($survey->title)[LaravelLocalization::getCurrentLocale()], ['id'=>$survey->id])}}
<a href="survey/view/{{ $survey->id }}" title="Take Survey" class="secondary-content"><i class="material-icons">send</i></a>
<a href="survey/{{$survey->id}}/edit" title="Edit Survey" class="secondary-content"><i class="material-icons">edit</i></a>
<a href="survey/answers/{{ $survey->id }}" title="View Survey Answers" class="secondary-content"><i class="material-icons">textsms</i></a>
</div>
</li>
@empty
<p class="flow-text center-align">Nothing to show</p>
@endforelse
</ul>
我改变了这一行:
{{ link_to_route('detail.survey', $survey->title, ['id'=>$survey->id])}}
对此:
{{ link_to_route('detail.survey', unserialize ($survey->title)[LaravelLocalization::getCurrentLocale()], ['id'=>$survey->id])}}
但没有工作这是错误消息:(https://i.imgur.com/jYkDa9u.png)。如果我使用这个:
{{ link_to_route('detail.survey', $survey->title, ['id'=>$survey->id])}
^ 我会得到这个结果:(https://i.imgur.com/TxEcxa2.png)。
那么,我需要做什么?我希望能够单击我想要的语言,一切都将被翻译,从数据库中的数组中检索语言。