0

我创建了一个调查网站,然后我想使用动态本地化,我需要在数据库中存储两种语言的所有内容。因此,如果用户在右上角选择“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)。

那么,我需要做什么?我希望能够单击我想要的语言,一切都将被翻译,从数据库中的数组中检索语言。

4

0 回答 0