如何在编辑页面中获取旧值,以便在 laravel 中使用输入文本字段进行下拉列表?



这是我的输出 https://i.stack.imgur.com/VALXP.jpg,我没有获得选定的值。基本上这里有两个字段,一个是下拉列表,另一个是输入字段,如果选择了值,我如何获得这个选定的值或者如果输入了值,则显示输入字段 https://i.stack.imgur.com/U7shE.jpg 这是我的编辑刀片文件

<div class="form-group">
<label for="page" class="labelclass">Pages</label>
<select class="form-control" name="page" id="pageone">
<option value="0">Select page</option>
@foreach($pages as $page)
<option value="{{$page->id}}" @if(old('page1', $items->content_id) === $page->id) selected @endif>{{$page->title}}</option>
@endforeach                                    
<option disabled>---</option>
<option value='NewField'>Add Custom URL</option>
</select>
<input class="form-control" type="text" name="page1" id="page" placeholder="https://" value="{{$items->content_id}}" style="display: none; width: 450px; margin-top: 5px;" />
</div>
<!--Here is my java script code-->
<script type="text/javascript">
$(function() {
// Add lead
$("#pageone").change(function() {
var dropvalue = $(this).val();
if (dropvalue == "NewField") {
$("#page").show();
} else {
$("#page").hide();
}
});
});
</script>

这是我的控制器

public function edit($id)
{
//
// $items = Menu::with('Content')->findOrFail($id);
$items = Menu::findOrFail($id);
$pages = Content::all();
// return view('menu.edit',compact('items','pages'));
// dd([$pages, $items]);
return view('menu.edit',['items'=>$items, 'pages'=>$pages]);
// return view('menu.edit',['items'=>$items]);
}

/**
* Update the specified resource in storage.
*
* @param  IlluminateHttpRequest  $request
* @param  int  $id
* @return IlluminateHttpResponse
*/
public function update(Request $request, $id)
{
//
$this->validate($request,[
'name'=>'required',
'status'=>'required|not_in:2',
'page'=>'required|not_in:0'
]);
$items = Menu::find($id);
// return json_encode($items);
// exit();
// dd($items);
$items->name = $request->name;
$items->status = $request->status;
// $items->content_id = $request->page;
if ($request->input('page') == 'NewField') {
$items->content_id = $request->page1;
} else {
$items->content_id = $request->page;
}
$items->save();
// return Redirect::route('admin_menu')->with('message','Menu  is updated successfully');
return redirect()->route('admin_menu')->with('message','Menu  is updated successfully');
}

这一行有一个问题:

<option value="{{$page->id}}" @if(old('page1', $items->content_id) === $page->id) selected @endif>{{$page->title}}</option>

您正在检查page1的旧值,该值将在文本输入中输入的字符串。将其更改为page

@if(old('page', $items->content_id) === $page->id)

要选择"添加自定义网址",您还需要添加selected属性:

<option value='NewField' @if(old('page', $items->content_id) === 'NewField') selected @endif>Add Custom URL</option>

最后,JS函数还需要在加载时运行,而不仅仅是在更改时运行,因此显示文本输入(如有必要(。

最新更新