0
タグをリストするLaravelアプリケーションにメニューがあります。私は、より多くのタグを追加してその順序を変更できるようにしたいが、各タグの基礎となるデータベースIDには影響したくない。それは私がすでにそれらに関連しているデータを破壊するためです。データベースIDに影響を与えずにメニュー項目を並べ替える
データベース::だから私は、私はそうのような「display_order」と呼ばれる私のデータベースに余分な列を追加すると思っ
Schema::create('tags', function (Blueprint $table) {
$table->increments('id');
$table->integer('display_order');
$table->string('name');
$table->timestamps();
});
今私は、ユーザーがdisplay_orderフィールドの値を変更できるようにビューを作成したいです。
コントローラー:
public function showTagsOrder()
{
$tags = Tag::all()->sortBy('display_order');
return view('menu.tags', compact('tags'));
}
ルート:
Route::get('/menu/tags', ['as' => 'menu_tags', 'uses' => '[email protected]']);
ビュー:
当初、私は、各タグとそのdisplay_orderを印刷し、ユーザーがテキストフィールドに値を更新することを可能にするページを表示します{!! Form::open(['action' => '[email protected]']) !!}
@foreach($tags->chunk(18) as $chunk)
<div class="col">
@foreach($chunk as $tag)
<p><label>{!! $tag->name !!}</label><input type="text" name="tag_array[{!! $tag->id !!}]" value="{!! $tag->display_order !!}" class="numeric" />
@endforeach
</div>
@endforeach
<p>{!! Form::submit('Submit') !!}
{!! Form::close() !!}
フォームが送信されると、私のコントロールに次の機能がありますr:
public function updateTagsOrder(TagsMenuRequest $request)
{
$i = 1;
foreach($request->tag_array as $tag_value)
{
$tag = new Tag;
$tag = Tag::find($i);
$tag->display_order = $tag_value;
$tag->save();
$i++;
}
flash()->overlay('The order of tags in the menu has been udpated!', 'Congratulations');
return redirect('/');
}
これは機能しません。どのように私はこれを書き換えるので、私は各タグにdisplay_orderの正しい値を割り当てました。私はあなたの助けに非常に感謝しています。
素晴らしい。ご協力いただきありがとうございます :) – Magearlik