如何将变量用作“值”属性 标签

问题描述 投票:0回答:2

我目前正在使用Laravel,我希望有一个下拉框显示我的数据库中的类别名称,但是当选择它返回给服务器的值应该是所选名称的数值,它也存储在数据库中。

像这样:

@foreach($categories as $category)
   <option name="pid" value="$category->id" id="cname">{{$category->name}}</option>
@endforeach

这些值从我的Controller传递到Blade模板。正如您所看到的,我希望它在下拉列表中显示类别名称(它可以正常),但是一旦选择并提交,我希望返回类别ID。由于“value”属性返回值,我希望将变量$category->id作为“值”。我想这样做而不使用JavaScript或jQuery。只有PHP。我将如何实现这一目标,甚至可能吗?

当我尝试使用value="{{$category->id}}"时,我得到了Laravel错误:

完整性约束违规:1048列'parent_id'不能为空

所以它似乎没有提交下拉列表的价值。

这是我目前在我的Blade模板中使用的代码:

<form class="" action="{{route('createsubcategorypost')}}" method="post">
  <div class="form-group">
    <label for="cname">Sub-Category name:</label>
    <input type="text" name="cname" value="" placeholder="Sub-Category Name" id="cname" class="form-control">
  </div>
    <div class="form-group">
        <label for="pid">Parent ID</label>
        <select class="form-control">
          @foreach($categories as $category)
            <option name="pid" value="{{$category->id}}" id="pid">{{$category->name}}</option>
          @endforeach
        </select>
  </div>
  <div class="form-group">
    <center>
      <button type="submit" name="button" class="btn btn-success">Create Sub-Category</button>
    </center>
  </div>
{{csrf_field()}}
</form>

这是我的控制器中的代码:

public function CreateSubCategoryPost(Request $request){
        if ($request->cname == null) {
          session()->flash('errormessage',' Invalid sub-category name.');
          return redirect()->back();
        }
        $scc = SubCategory::where('name',$request->cname)->first();
        if ($scc !== null) {
          session()->flash('errormessage',' Sub-category with that name already exists.');
          return redirect()->back();
        }
        $subCategory = new SubCategory;
        $subCategory->name = $request->cname;
        $subCategory->uniqueid = 'SCA'.str_random(28);
        $subCategory->slug = str_slug($request->cname,'-');
        $subCategory->parent_id = $request->pid;
        $subCategory->save();
        return redirect()->route('categories');
    }
php html laravel bootstrap-4 blade
2个回答
1
投票

您在选项标记内显示类别名称的方式相同:

@foreach($categories as $category)
   <option name="pid" value="{{$category->id}}" id="cname">{{$category->name}}</option>
@endforeach

1
投票

从Laravel中的数据库调用的所有内容都应该具有{{$category->someName}}格式,无论您将它放在视图中的哪个位置。在你的情况下,你需要在$category->id中包含{{ }}

© www.soinside.com 2019 - 2024. All rights reserved.