2017-01-10 5 views
0

У меня есть вложенный цикл, который я использую для создания элементов формы. Я пытаюсь получить мой выход бытьEscape] Character in String

round_1 [ 
    'playername' => 'id' 
] 

Я считаю, что код, который я есть сейчас выплевывая нонсенс, потому что скобки не убежали, когда они передаются в <select name=... заявление. Все остальное отлично работает.

Есть ли способ избежать $ игрока и передать его в массив на PHP или Blade?

Я вставил соответствующий кусок моего кода:

{!! Form::open(['url' => 'admin/games/process']) !!} 

@foreach ($players_array as $game) 
    <h4>Round {{$round}}</h4> 
    <div class="form-group"> 

     @foreach($game as $player) 
      <p><strong>{{ $player }}</strong></p> 

      <!-- This chunk might be able to be written cleaner using laravelcollective/html --> 
      <select name="round_{{$round}}[{{$player}}]"> 
       @foreach($all_players as $key=>$p) 
        <option value="{{ $key }}">{{ $p }}</option> 
       @endforeach 
      </select> 

     @endforeach 
    </div> 
    <!-- {{ $round++ }} --> 

@endforeach 

<div class="form-group"> 
    {!! Form::submit('Submit Refactored Players', ['class' => 'btn btn-outline-primary form-control']) !!} 
</div> 
{!! Form::close() !!} 

Спасибо!

ответ

0

Решение должно было использовать str_replace для замены символа ], передать его в контроллер, а затем создать новый массив для размещения старого массива с обратной заменой, поскольку вы не можете надежно изменить ключ php.

Посмотреть

@foreach ($players_array as $game) 
    <h4>Round {{$round}}</h4> 
    <div class="form-group"> 

     @foreach($game as $player) 
      <p><strong>{{ $player }}</strong></p> 

      <!-- This chunk might be able to be written cleaner using laravelcollective/html --> 
      <select name="round_{{$round}}[{{str_replace("]", "fstupidkey", $player)}}]"> 
       @foreach($all_players as $key=>$p) 
        <option value="{{ $key }}">{{ $p }}</option> 
       @endforeach 
      </select> 

     @endforeach 
    </div> 
    <!-- {{ $round++ }} --> 

@endforeach 

Контроллер

public function process_logs(Request $request) 
{ 
    /* 
    * Accept player match arrays from user form 
    * Input event data into database 
    */ 


    $a = $request->round_1; 

    /* 
    * Create new array to put shit in.. 
    */ 
    $b = []; 

    foreach($a as $key=>$item) 
    { 
     $c = str_replace("fstupidkey", "]", $key); 
     $b[$c] = $item; 
    } 

    dd($b); 

}