2017-06-16 81 views
0

我得到一个包含匹配变量的隐藏字段。Laravel从输入数组中检索元素

{{ Form::input('hidden', 'match', $match, ['id' => 'match']) }} 

如何在我的商店方法中检索“主页”字段等?

public function store(Request $request) 
    { 
     Log::info($request->match); 

     Ticket::create([ 
      'home' => $request->match->home, 
      'away' => $request->away, 
      'place' => $request->place, 
      'price' => $request->price, 
      'section' => $request->section, 
      'amount' => $request->amount, 
      'competition' => $request->competition 
     ]); 

     return redirect('/'); 
    } 
+0

能否请您向我们展示'Log :: info($ request-> match);'?它是一个对象吗?阵列? –

+0

我假设你将匹配id存储在隐藏字段中,只需在你的控制器中用Match :: find($ request-> match)查询它; – btl

回答

0

现在的代码不起作用。

{{ Form::input('hidden', 'match', $match, ['id' => 'match']) }} 

将存储字符串。在您的控制器功能中,您正试图访问对象参数$request->match->home。做这种事情的唯一方法是使用json_encoding/json_decoding。其中$match应该是json_encode对象,而$request->match应该在你的Controller中解码。

可能的解决方案:

//in your blade file 
{{ Form::input('hidden', 'match', json_encode($match), ['id' => 'match']) }} 

//in your controller 
public function store(Request $request) 
{ 
    $match = json_decode($request->match); 

    Ticket::create([ 
     'home' => match->home, 
     'away' => $request->away, 
     'place' => $request->place, 
     'price' => $request->price, 
     'section' => $request->section, 
     'amount' => $request->amount, 
     'competition' => $request->competition 
    ]); 

    return redirect('/'); 
} 

如果你不喜欢你的刀片使用PHP代码的解决方案文件一个更好的解决办法是序列化的匹配对象:

$match= App\Match::find(1); 

$match = $match->toJson(); 
return view('edit', ['match' => $match]) 
+0

使用json编码和解码做的工作,谢谢! – jordibenck

0

你可以在你输入一个编码的JSON字符串存储:

{{ Form::input('hidden', 'match', $match, json_encode(['some' => 'thing'])) }}

您将需要再次解码:

$match = json_decode($request->match)

然后,您可以:

$match['some'];