如何根据刀片模板中的数据库字段设置所选选项?

时间:2019-07-06 08:51:11

标签: javascript php html laravel laravel-blade

在我的laravel项目中,我有一个编辑表单,我想根据数据库字段设置选定的选项。我该怎么办?

在我的视图中,我无法在php部分中使用$ info变量。我认为这是因为控制器部分。

这是我的控制人:

<?php 
public function Edit()
{
    $idNew = $_GET['id'];
    $info = DB::table('test')->select('id','name','status')->where('id','=', $idNew)->get();
    $returnHTML = view('layouts.edit',['info'=> $info])->render();

    return response()->json([
    'html'=> $returnHTML
    ]);
}
?>

我的观点:

<html>
<option value="enabled"  <?php if($info['status'] == 'enabled'){ echo ' selected="selected"'; } ?>>enabled</option>
</html>

2 个答案:

答案 0 :(得分:2)

您缺少某些部分。

  1. 在laravel控制器中,请勿使用$_GET数组。使用请求对象
  2. 在刀片文件中,请勿使用php标记,请使用刀片语法
  3. 如果要从控制器显示刀片视图,请不要使用response()->json()函数,因为它用于ajax调用。
  4. 当您需要一条记录时,请勿使用get()函数。使用first()函数。

您的控制者应为:

use Illuminate\Http\Request;

public function Edit(Request $request)
{
    $idNew = $request->input('id', 'default_value');
    $info = DB::table('test')->select('id','name','status')->where('id','=', $idNew)->first();

    return view('layouts.edit', ['info'=> $info]);
}

您的刀片文件应为:

<html>
    <option value="enabled" {!! $info['status'] == 'enabled' ? "selected='selected'" : "" !!}>enabled</option>
</html>

答案 1 :(得分:0)

使用数据数组并将其与视图一起传递

 public function Edit()
        {
        $data=array();
            $idNew = $_GET['id'];
            $data['info'] = DB::table('test')->select('id','name','status')->where('id','=', $idNew)->get();
             return view('layouts.edit')->with($data);
        }